summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2008-02-20 15:54:54 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2008-02-20 16:07:20 -0800
commit6010d2d957fb05838cd3ab887ac261752ff8ff87 (patch)
tree049bfc4f7ff92b6113686ac429b76e66dc9dcad4
parentcheckout: tone down the "forked status" diagnostic messages (diff)
downloadtgif-6010d2d957fb05838cd3ab887ac261752ff8ff87.tar.xz
checkout: work from a subdirectory
When switching branches from a subdirectory, checkout rewritten in C extracted the toplevel of the tree in there. This should fix it. Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin-checkout.c1
-rwxr-xr-xt/t7201-co.sh34
2 files changed, 34 insertions, 1 deletions
diff --git a/builtin-checkout.c b/builtin-checkout.c
index 1fc1e56bdf..f51b77a6bc 100644
--- a/builtin-checkout.c
+++ b/builtin-checkout.c
@@ -237,7 +237,6 @@ static int merge_working_tree(struct checkout_opts *opts,
topts.dir = xcalloc(1, sizeof(*topts.dir));
topts.dir->show_ignored = 1;
topts.dir->exclude_per_dir = ".gitignore";
- topts.prefix = prefix;
tree = parse_tree_indirect(old->commit->object.sha1);
init_tree_desc(&trees[0], tree->buffer, tree->size);
tree = parse_tree_indirect(new->commit->object.sha1);
diff --git a/t/t7201-co.sh b/t/t7201-co.sh
index 5492f21c7e..0fa94678ad 100755
--- a/t/t7201-co.sh
+++ b/t/t7201-co.sh
@@ -263,4 +263,38 @@ test_expect_success 'checkout with ambiguous tag/branch names' '
'
+test_expect_success 'switch branches while in subdirectory' '
+
+ git reset --hard &&
+ git checkout master &&
+
+ mkdir subs &&
+ (
+ cd subs &&
+ git checkout side
+ ) &&
+ ! test -f subs/one &&
+ rm -fr subs
+
+'
+
+test_expect_success 'checkout specific path while in subdirectory' '
+
+ git reset --hard &&
+ git checkout side &&
+ mkdir subs &&
+ >subs/bero &&
+ git add subs/bero &&
+ git commit -m "add subs/bero" &&
+
+ git checkout master &&
+ mkdir -p subs &&
+ (
+ cd subs &&
+ git checkout side -- bero
+ ) &&
+ test -f subs/bero
+
+'
+
test_done