Skip to content
  • Johan Herland's avatar
    git notes merge: Manual conflict resolution, part 2/2 · 6abb3655
    Johan Herland authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    When the notes merge conflicts in .git/NOTES_MERGE_WORKTREE have been
    resolved, we need to record a new notes commit on the appropriate notes
    ref with the resolved notes.
    
    This patch implements 'git notes merge --commit' which the user should
    run after resolving conflicts in the notes merge worktree. This command
    finalizes the notes merge by recombining the partial notes tree from
    part 1 with the now-resolved conflicts in the notes merge worktree in a
    merge commit, and updating the appropriate ref to this merge commit.
    
    In order to correctly finalize the merge, we need to keep track of three
    things:
    
    - The partial merge result from part 1, containing the auto-merged notes.
      This is now stored into a ref called .git/NOTES_MERGE_PARTIAL.
    - The unmerged notes. These are already stored in
      .git/NOTES_MERGE_WORKTREE, thanks to part 1.
    - The notes ref to be updated by the finalized merge result. This is now
      stored in a symref called .git/NOTES_MERGE_REF.
    
    In addition to "git notes merge --commit", which uses the above details
    to create the finalized notes merge commit, this patch also implements
    "git notes merge --reset", which aborts the ongoing notes merge by simply
    removing the files/directory described above.
    
    FTR, "git notes merge --commit" reuses "git notes merge --reset" to remove
    the information described above (.git/NOTES_MERGE_*) after the notes merge
    have been successfully finalized.
    
    The patch also contains documentation and testcases for the two new options.
    
    This patch has been improved by the following contributions:
    - Ævar Arnfjörð Bjarmason: Fix nonsense sentence in --commit description
    - Sverre Rabbelier: Rename --reset to --abort
    
    Thanks-to: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
    Thanks-to: Sverre Rabbelier <srabbelier@gmail.com>
    Signed-off-by: default avatarJohan Herland <johan@herland.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    6abb3655