• J
    checkout: don't confuse ref and object flags · add416a6
    Jeff King 提交于
    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 commit 468224e5, we did so by calling for_each_ref, and
    feeding each resulting refname to setup_revisions.  Commit 468224e5
    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: NJeff King <peff@peff.net>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    add416a6
checkout.c 29.9 KB