зеркало из https://github.com/microsoft/git.git
checkout: don't confuse ref and object flags
When we are leaving a detached HEAD, we do a revision traversal to check whether we are orphaning any commits, marking the commit we're leaving as the start of the traversal, and all existing refs as uninteresting. Prior to commit468224e5
, we did so by calling for_each_ref, and feeding each resulting refname to setup_revisions. Commit468224e5
refactored this to simply mark the pending objects, saving an extra lookup. However, it confused the "flags" parameter to the each_ref_fn clalback, which is about the flags we found while looking up the ref with the object flag. Because REF_ISSYMREF ("this ref is a symbolic ref, e.g. refs/remotes/origin/HEAD") happens to be the same bit pattern as SEEN ("we have picked this object up from the pending list and moved it to revs.commits list"), we incorrectly reported that a commit previously at the detached HEAD will become unreachable if the only ref that can reach the commit happens to be pointed at by a symbolic ref. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
468224e580
Коммит
add416a6c0
|
@ -592,7 +592,7 @@ static int add_pending_uninteresting_ref(const char *refname,
|
|||
const unsigned char *sha1,
|
||||
int flags, void *cb_data)
|
||||
{
|
||||
add_pending_sha1(cb_data, refname, sha1, flags | UNINTERESTING);
|
||||
add_pending_sha1(cb_data, refname, sha1, UNINTERESTING);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче