Merge branch 'dt/notes-multiple'
When linked worktree is used, simultaneous "notes merge" instances for the same ref in refs/notes/* are prevented from stomping on each other. * dt/notes-multiple: notes: handle multiple worktrees worktrees: add find_shared_symref
This commit is contained in:
@ -19,6 +19,7 @@
|
||||
#include "string-list.h"
|
||||
#include "notes-merge.h"
|
||||
#include "notes-utils.h"
|
||||
#include "branch.h"
|
||||
|
||||
static const char * const git_notes_usage[] = {
|
||||
N_("git notes [--ref <notes-ref>] [list [<object>]]"),
|
||||
@ -825,10 +826,15 @@ static int merge(int argc, const char **argv, const char *prefix)
|
||||
update_ref(msg.buf, default_notes_ref(), result_sha1, NULL,
|
||||
0, UPDATE_REFS_DIE_ON_ERR);
|
||||
else { /* Merge has unresolved conflicts */
|
||||
char *existing;
|
||||
/* Update .git/NOTES_MERGE_PARTIAL with partial merge result */
|
||||
update_ref(msg.buf, "NOTES_MERGE_PARTIAL", result_sha1, NULL,
|
||||
0, UPDATE_REFS_DIE_ON_ERR);
|
||||
/* Store ref-to-be-updated into .git/NOTES_MERGE_REF */
|
||||
existing = find_shared_symref("NOTES_MERGE_REF", default_notes_ref());
|
||||
if (existing)
|
||||
die(_("A notes merge into %s is already in-progress at %s"),
|
||||
default_notes_ref(), existing);
|
||||
if (create_symref("NOTES_MERGE_REF", default_notes_ref(), NULL))
|
||||
die("Failed to store link to current notes ref (%s)",
|
||||
default_notes_ref());
|
||||
|
||||
Reference in New Issue
Block a user