#!/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. ## Check that "morph merge" merges a system branch into a newly created ## system branch 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 cd "$DATADIR/workspace/test/feature" # Edit hello in FROM "$SRCDIR/scripts/test-morph" edit hello-system hello-stratum hello cd test:hello touch newfile.txt git add newfile.txt git commit -m foo --quiet # Commit in morphs repo # FIXME: this should become unnecessary since only the refs have # changed. cd ../test:morphs git commit --all --quiet -m "Update morph refs for test/feature" # Merge changes back to test/stable cd "$DATADIR/workspace" cd test/stable "$SRCDIR/scripts/test-morph" merge test/feature # Check results: changes to 'hello' should have been merged back to # test/stable. cd test:hello [ -e newfile.txt ] # Make sure all changes are committed and to the correct branch ('hello' # was built from 'master' before branching, so the changes should be # merged back to 'master'). git status --short [ $(git rev-parse master) = $(git rev-parse HEAD) ] # Changes here should be on test/stable. cd ../test:morphs git status --short [ $(git rev-parse test/stable) = $(git rev-parse HEAD) ] # Make sure all refs to the merged branch have gone. ! grep "\"ref\": \"test/feature\"" *.morph # The only change here was the branch refs, which have now been # changed back - so there should not be any new commits. echo "Commit message for test:morphs" git cat-file commit HEAD | tail -n 1 echo echo "Commit message for test:hello" cd ../test:hello git cat-file commit HEAD | tail -n 1