Skip to content
  • Joey Hess's avatar
    write first for-merge ref to FETCH_HEAD first · 96890f4c
    Joey Hess authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    The FETCH_HEAD refname is supposed to refer to the ref that was fetched
    and should be merged. However all fetched refs are written to
    .git/FETCH_HEAD in an arbitrary order, and resolve_ref_unsafe simply
    takes the first ref as the FETCH_HEAD, which is often the wrong one,
    when other branches were also fetched.
    
    The solution is to write the for-merge ref(s) to FETCH_HEAD first.
    Then, unless --append is used, the FETCH_HEAD refname behaves as intended.
    If the user uses --append, they presumably are doing so in order to
    preserve the old FETCH_HEAD.
    
    While we are at it, update an old example in the read-tree documentation
    that implied that each entry in FETCH_HEAD only has the object name, which
    is not true for quite a while.
    
    [jc: adjusted tests]
    
    Signed-off-by: default avatarJoey Hess <joey@kitenet.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    96890f4c