revision walker: include a detached HEAD in --all
When HEAD is detached, --all should list it, too, logically, as a detached HEAD is by definition a temporary, unnamed branch. It is especially necessary to list it when garbage collecting, as the detached HEAD would be trashed. Noticed by Thomas Rast. Note that this affects creating bundles with --all; I contend that it is a good change to add the HEAD, so that cloning from such a bundle will give you a current branch. However, I had to fix t5701 as it assumed that --all does not imply HEAD. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
bf474e2402
commit
f0298cf1c6
@ -1223,6 +1223,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
|
||||
|
||||
if (!strcmp(arg, "--all")) {
|
||||
handle_refs(revs, flags, for_each_ref);
|
||||
handle_refs(revs, flags, head_ref);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--branches")) {
|
||||
|
@ -11,8 +11,8 @@ test_expect_success 'preparing origin repository' '
|
||||
git clone --bare . x &&
|
||||
test "$(GIT_CONFIG=a.git/config git config --bool core.bare)" = true &&
|
||||
test "$(GIT_CONFIG=x/config git config --bool core.bare)" = true
|
||||
git bundle create b1.bundle --all HEAD &&
|
||||
git bundle create b2.bundle --all &&
|
||||
git bundle create b1.bundle master HEAD &&
|
||||
git bundle create b2.bundle master &&
|
||||
mkdir dir &&
|
||||
cp b1.bundle dir/b3
|
||||
cp b1.bundle b4
|
||||
|
38
t/t6014-rev-list-all.sh
Executable file
38
t/t6014-rev-list-all.sh
Executable file
@ -0,0 +1,38 @@
|
||||
#!/bin/sh
|
||||
|
||||
test_description='--all includes detached HEADs'
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
|
||||
commit () {
|
||||
test_tick &&
|
||||
echo $1 > foo &&
|
||||
git add foo &&
|
||||
git commit -m "$1"
|
||||
}
|
||||
|
||||
test_expect_success 'setup' '
|
||||
|
||||
commit one &&
|
||||
commit two &&
|
||||
git checkout HEAD^ &&
|
||||
commit detached
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'rev-list --all lists detached HEAD' '
|
||||
|
||||
test 3 = $(git rev-list --all | wc -l)
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'repack does not lose detached HEAD' '
|
||||
|
||||
git gc &&
|
||||
git prune --expire=now &&
|
||||
git show HEAD
|
||||
|
||||
'
|
||||
|
||||
test_done
|
Loading…
Reference in New Issue
Block a user