diff options
author | Jannis Pohlmann <jannis.pohlmann@codethink.co.uk> | 2012-08-30 13:35:45 +0000 |
---|---|---|
committer | Jannis Pohlmann <jannis.pohlmann@codethink.co.uk> | 2012-08-30 14:45:06 +0000 |
commit | 332b39f5df8a70f0c0146189a28d465da493e441 (patch) | |
tree | f0499b68f227fc3d3c4ae9ad96d49fe5ac1cf8a1 /tests.branching/checkout-works-anywhere.script | |
parent | 8247661b26f7232038bac95c64780121e9691db5 (diff) | |
download | morph-332b39f5df8a70f0c0146189a28d465da493e441.tar.gz |
Fix branch/checkout to always create branches in the workspace directory
Doing this rather than creating the system branches in the current working
directory allows "morph branch" and "morph checkout" to be run anywhere in
the workspace (e.g. in a different branch).
This commit also adds two tests to verify that new branches are always
created in the toplevel workspace directory.
Diffstat (limited to 'tests.branching/checkout-works-anywhere.script')
-rwxr-xr-x | tests.branching/checkout-works-anywhere.script | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests.branching/checkout-works-anywhere.script b/tests.branching/checkout-works-anywhere.script new file mode 100755 index 00000000..fdc3c955 --- /dev/null +++ b/tests.branching/checkout-works-anywhere.script @@ -0,0 +1,46 @@ +#!/bin/bash +# Copyright (C) 2012 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. + +# Make sure "morph checkout" works anywhere in a workspace or system branch. + +set -eu + +cd "$DATADIR/workspace" +"$SRCDIR/scripts/test-morph" init + +# First, check out the master branch from the workspace directory. +"$SRCDIR/scripts/test-morph" checkout baserock:morphs master + +echo "Workspace after checking out master from the workspace directory:" +"$SRCDIR/scripts/list-tree" "$DATADIR/workspace" | grep -v '/\.git/' | + sed 's,/cache/gits/file_[^/]*_,/cache/gits/file_,' + +# Reset the workspace. +cd "$DATADIR" +rm -rf workspace +mkdir workspace +cd workspace +"$SRCDIR/scripts/test-morph" init + +# This time, create a new branch and check out the master branch +# from within that branch. +"$SRCDIR/scripts/test-morph" branch baserock:morphs newbranch +cd newbranch/baserock:morphs +"$SRCDIR/scripts/test-morph" checkout baserock:morphs master + +echo "Workspace after checking out master from within a new branch:" +"$SRCDIR/scripts/list-tree" "$DATADIR/workspace" | grep -v '/\.git/' | + sed 's,/cache/gits/file_[^/]*_,/cache/gits/file_,' |