#!/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. ## "morph merge" should pull changes from a chunk even if its name was changed ## in the branch set -eu # Create system branch. cd "$DATADIR/workspace" "$SRCDIR/scripts/test-morph" init "$SRCDIR/scripts/test-morph" branch test:morphs baserock/newbranch # Rename the chunk, and then commit a seperate change "$SRCDIR/scripts/test-morph" edit hello-system hello-stratum hello cd baserock/newbranch/test:hello cat hello.morph | sed -e 's/"name": "hello"/"name": "goodbye"/' > goodbye.morph git rm -q hello.morph git add goodbye.morph git commit -m "Rename chunk" --quiet touch newfile.txt git add newfile.txt git commit -m "Add new file" --quiet # Update stratum to point at the renamed chunk cd ../test:morphs sed -ie 's/"name": "hello"/"name": "goodbye"/' hello-stratum.morph git commit --all --quiet -m "Update morph refs for baserock/newbranch" # Merge changes back to master cd "$DATADIR/workspace" "$SRCDIR/scripts/test-morph" checkout test:morphs master cd master "$SRCDIR/scripts/test-morph" merge baserock/newbranch # Morph should have realised that 'goodbye' is not a new chunk, # and pulled in the changes from 'hello' in the old branch cd test:hello [ ! -e hello.morph ] [ -e goodbye.morph ] [ -e newfile.txt ]