зеркало из https://github.com/microsoft/git.git
Merge branch 'mk/reachable-protect-detached-head' into maint
Reachability check (used in "git prune" and friends) did not add a detached HEAD as a starting point to traverse objects still in use. * mk/reachable-protect-detached-head: reachable.c: add HEAD to reachability starting commits
This commit is contained in:
Коммит
421ec4f8d1
|
@ -229,6 +229,9 @@ void mark_reachable_objects(struct rev_info *revs, int mark_reflog,
|
||||||
/* Add all external refs */
|
/* Add all external refs */
|
||||||
for_each_ref(add_one_ref, revs);
|
for_each_ref(add_one_ref, revs);
|
||||||
|
|
||||||
|
/* detached HEAD is not included in the list above */
|
||||||
|
head_ref(add_one_ref, revs);
|
||||||
|
|
||||||
/* Add all reflog info */
|
/* Add all reflog info */
|
||||||
if (mark_reflog)
|
if (mark_reflog)
|
||||||
for_each_reflog(add_one_reflog, revs);
|
for_each_reflog(add_one_reflog, revs);
|
||||||
|
|
|
@ -104,6 +104,28 @@ test_expect_success 'prune: prune unreachable heads' '
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'prune: do not prune detached HEAD with no reflog' '
|
||||||
|
|
||||||
|
git checkout --detach --quiet &&
|
||||||
|
git commit --allow-empty -m "detached commit" &&
|
||||||
|
# verify that there is no reflogs
|
||||||
|
# (should be removed and disabled by previous test)
|
||||||
|
test ! -e .git/logs &&
|
||||||
|
git prune -n >prune_actual &&
|
||||||
|
: >prune_expected &&
|
||||||
|
test_cmp prune_actual prune_expected
|
||||||
|
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'prune: prune former HEAD after checking out branch' '
|
||||||
|
|
||||||
|
head_sha1=$(git rev-parse HEAD) &&
|
||||||
|
git checkout --quiet master &&
|
||||||
|
git prune -v >prune_actual &&
|
||||||
|
grep "$head_sha1" prune_actual
|
||||||
|
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'prune: do not prune heads listed as an argument' '
|
test_expect_success 'prune: do not prune heads listed as an argument' '
|
||||||
|
|
||||||
: > file2 &&
|
: > file2 &&
|
||||||
|
|
Загрузка…
Ссылка в новой задаче