#!/bin/sh # # Copyright (C) 2012-2013 Codethink Limited # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ## Conflict caused by two equivalent strata having different order in two ## different branches ## Morph should possibly resolve this conflict automatically in the future, ## because the meaning of the morphologies is unambiguious if not the ## contents. It depends on how much weight we give to the sort order of ## the morphology from a developer's point of view. set -eu cd "$DATADIR/workspace" "$SRCDIR/scripts/test-morph" init # Create stable branch to merge TO "$SRCDIR/scripts/test-morph" branch test:morphs test/stable cd test/stable/test:morphs git push --quiet origin test/stable # Create feature branch to merge FROM "$SRCDIR/scripts/test-morph" branch test:morphs test/feature test/stable # Need 2 chunks! # Make a change in TO cd "$DATADIR/workspace/test/stable" "$SRCDIR/scripts/test-morph" edit hello-system hello-stratum cd test:morphs cat < "hello-stratum.morph" { "name": "hello-stratum", "kind": "stratum", "chunks": [ { "name": "hello-runtime", "repo": "test:hello", "ref": "master", "morph": "hello", "build-depends": [] }, { "name": "hello-devel", "repo": "test:hello", "ref": "master", "morph": "hello", "build-depends": [] } ] } EOF git commit --quiet --all -m "Split up 'hello' chunk into runtime and devel" # Make a change in FROM that isn't very mergable cd "$DATADIR/workspace/test/feature" "$SRCDIR/scripts/test-morph" edit hello-system hello-stratum cd test:morphs cat < "hello-stratum.morph" { "name": "hello-stratum", "kind": "stratum", "chunks": [ { "name": "hello-devel", "repo": "test:hello", "ref": "master", "morph": "hello", "build-depends": [] }, { "name": "hello-runtime", "repo": "test:hello", "ref": "master", "morph": "hello", "build-depends": [] } ] } EOF git commit --quiet --all -m "Split up 'hello' chunk into devel and runtime" # Merge changes from test/feature to test/stable - we expect failure cd "$DATADIR/workspace/test/stable" "$SRCDIR/scripts/test-morph" merge test/feature