summaryrefslogtreecommitdiff
path: root/reachable.c
diff options
context:
space:
mode:
authorMax Kirillov <max@max630.net>2014-09-03 16:14:10 (GMT)
committerJunio C Hamano <gitster@pobox.com>2014-09-03 17:47:44 (GMT)
commitc40fdd01dd120c8c63da5e830ccdeb1518434bd6 (patch)
tree8642e27025ab0d1775fe864cc48cda237227d970 /reachable.c
parent96db324a73fdada6fbe7b63221986f8f18cc63b0 (diff)
downloadgit-c40fdd01dd120c8c63da5e830ccdeb1518434bd6.zip
git-c40fdd01dd120c8c63da5e830ccdeb1518434bd6.tar.gz
git-c40fdd01dd120c8c63da5e830ccdeb1518434bd6.tar.bz2
reachable.c: add HEAD to reachability starting commits
HEAD is not explicitly used as a starting commit for calculating reachability, so if it's detached and reflogs are disabled it may be pruned. Add tests which demonstrate it. Test 'prune: prune former HEAD after checking out branch' also reverts changes to repository. Signed-off-by: Max Kirillov <max@max630.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'reachable.c')
-rw-r--r--reachable.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/reachable.c b/reachable.c
index 654a8c5..6f6835b 100644
--- a/reachable.c
+++ b/reachable.c
@@ -229,6 +229,9 @@ void mark_reachable_objects(struct rev_info *revs, int mark_reflog,
/* Add all external refs */
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 */
if (mark_reflog)
for_each_reflog(add_one_reflog, revs);