#!/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. ## When conflicts occur outside the root morphs repository, 'morph merge' ## should keep going until the end and report the list of failed repos. set -eu . "$SRCDIR/scripts/setup-3rd-party-strata" # 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 add_text_in_repo() { REPO="$1" TEXT="$2" cd "$1" echo $TEXT > conflict.txt git add conflict.txt git commit --quiet --message "Add some text" cd - > /dev/null } # Sow the seeds of conflict cd "$DATADIR/workspace/test/stable" "$SRCDIR/scripts/test-morph" edit hello-system stratum2 hello "$SRCDIR/scripts/test-morph" edit hello-system stratum3 hello add_text_in_repo "test:stratum2-hello" "xyzzy" add_text_in_repo "test:stratum3-hello" "xyzzy" cd "$DATADIR/workspace/test/feature" "$SRCDIR/scripts/test-morph" edit hello-system stratum2 hello "$SRCDIR/scripts/test-morph" edit hello-system stratum3 hello add_text_in_repo "test:stratum2-hello" "plugh" add_text_in_repo "test:stratum3-hello" "plover" # This should not be necessary, one day cd "$DATADIR/workspace/test/stable/test:morphs" git commit --quiet --all --message "Commit refs for branch" cd "$DATADIR/workspace/test/stable/test:external-strata" git commit --quiet --all --message "Commit refs for branch" cd "$DATADIR/workspace/test/feature/test:morphs" git commit --quiet --all --message "Commit refs for branch" cd "$DATADIR/workspace/test/feature/test:external-strata" git commit --quiet --all --message "Commit refs for branch" # Merge changes from test/feature to test/stable cd "$DATADIR/workspace/test/stable" "$SRCDIR/scripts/test-morph" merge test/feature || true # Check that the repos are all clean for repo in "test:morphs" "test:external-strata" \ "test:stratum2-hello" "test:stratum3-hello"; do cd "$DATADIR/workspace/test/stable/$repo" git status --porcelain [ $(git rev-parse HEAD) = $(git rev-parse test/stable) ] done