Show 38 quoted lines
> On Sat, Aug 1, 2015 at 12:11 AM, David Turner <dturner@twopensource.com> wrote:
> > Before creating NOTES_MERGE_REF, check NOTES_MERGE_REF using
> > find_shared_symref and die if we find one. This prevents simultaneous
> > merges to the same notes branch from different worktrees.
> >
> > Signed-off-by: David Turner <dturner@twopensource.com>
> > ---
> > builtin/notes.c | 5 +++
> > t/t3320-notes-merge-worktrees.sh | 72 ++++++++++++++++++++++++++++++++++++++++
> > 2 files changed, 77 insertions(+)
> > create mode 100755 t/t3320-notes-merge-worktrees.sh
> >
> > diff --git a/builtin/notes.c b/builtin/notes.c
> > index 63f95fc..e4dda79 100644
> > --- a/builtin/notes.c
> > +++ b/builtin/notes.c
> > @@ -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,14 @@ 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());
>
> Please confirm my assumption here: existing originally comes from a
> strbuf_detach(), so it's the caller's (i.e. our) responsibility to
> free() it, but we don't care, as we just die()d anyway. Correct?