git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 11/18] git notes merge: Add automatic conflict resolvers (ours, theirs, union)

From
Johan Herland <johan@herland.net>
Date
Oct 4, 2010, 15:10 UTC
Message-ID
<201010041710.02046.johan@herland.net>
In-Reply-To
<4CA6F806.9030209@gmail.com>
On Saturday 2. October 2010 11.14.46 Stephen Boyd wrote:
Show 20 quoted lines
> On 09/28/2010 05:23 PM, Johan Herland wrote:
> > @@ -788,6 +792,21 @@ static int merge(int argc, const char **argv, const
> > char *prefix)
> > 
> >  	expand_notes_ref(&remote_ref);
> >  	o.remote_ref = remote_ref.buf;
> > 
> > +	if (strategy) {
> > +		if (!strcmp(strategy, "manual"))
> > +			o.strategy = NOTES_MERGE_RESOLVE_MANUAL;
> > +		else if (!strcmp(strategy, "ours"))
> > +			o.strategy = NOTES_MERGE_RESOLVE_OURS;
> > +		else if (!strcmp(strategy, "theirs"))
> > +			o.strategy = NOTES_MERGE_RESOLVE_THEIRS;
> > +		else if (!strcmp(strategy, "union"))
> > +			o.strategy = NOTES_MERGE_RESOLVE_UNION;
> > +		else {
> > +			error("Unknown -X/--resolve strategy: %s", strategy);
> 
> Is it -X/--resolve or -s/--strategy? This error confuses me.

No, the message should say "Unknown -s/--strategy: %s". Will be fixed in the next iteration. Thanks for noticing.

Show 37 quoted lines
> > diff --git a/notes-merge.c b/notes-merge.c
> > index f625ebd..6fa59d8 100644
> > --- a/notes-merge.c
> > +++ b/notes-merge.c
> > @@ -262,6 +262,35 @@ static void diff_tree_local(struct
> > notes_merge_options *o,
> > 
> >  	diff_tree_release_paths(&opt);
> >  
> >  }
> > 
> > +static int merge_one_change(struct notes_merge_options *o,
> > +			    struct notes_merge_pair *p, struct notes_tree *t)
> > +{
> > +	/*
> > +	 * Return 0 if change was resolved (and added to notes_tree),
> > +	 * 1 if conflict
> > +	 */
> > +	switch (o->strategy) {
> > +	case NOTES_MERGE_RESOLVE_MANUAL:
> > +		return 1;
> > +	case NOTES_MERGE_RESOLVE_OURS:
> > +		OUTPUT(o, 2, "Using local notes for %s", sha1_to_hex(p->obj));
> > +		/* nothing to do */
> > +		return 0;
> > +	case NOTES_MERGE_RESOLVE_THEIRS:
> > +		OUTPUT(o, 2, "Using remote notes for %s", sha1_to_hex(p-
>obj));
> > +		if (add_note(t, p->obj, p->remote, combine_notes_overwrite))
> > +			die("confused: combine_notes_overwrite failed");
> 
> This will say:
> 
> fatal: confused: combine_notes_overwrite failed
> 
> Do we actually need the "confused" part? Heh, maybe we need a confused()
> function?

Well, combine_notes_overwrite() can only return 0, so if we get a non-zero return here I will certainly be confused, since this should be impossible. Maybe better to drop the check altogether and simply leave add_note(...)?

Have fun! :)
...Johan
-- 
Johan Herland, <johan@herland.net>
www.herland.net
Previous: Stephen BoydNext: Johan Herland
Message 31 of 46 in “git notes merge”
  1. 00/18 git notes mergeJohan Herland, Sep 29, 2010
  2. 01/18 (trivial) notes.h: Minor documentation fixes to copy_notes()Johan Herland, Sep 29, 2010
  3. Jonathan NiederOct 5, 2010
  4. Johan HerlandOct 5, 2010
  5. Jonathan NiederOct 5, 2010
  6. 02/18 notes.h: Make default_notes_ref() available in notes APIJohan Herland, Sep 29, 2010
  7. 03/18 notes.h/c: Clarify the handling of notes objects that are == null_sha1Johan Herland, Sep 29, 2010
  8. Jonathan NiederOct 5, 2010
  9. Johan HerlandOct 5, 2010
  10. 04/18 notes.h/c: Propagate combine_notes_fn return value to add_note() and beyondJohan Herland, Sep 29, 2010
  11. Jonathan NiederOct 5, 2010
  12. Johan HerlandOct 6, 2010
  13. 05/18 (trivial) t3303: Indent with tabs instead of spaces for consistencyJohan Herland, Sep 29, 2010
  14. 06/18 notes.c: Use two newlines (instead of one) when concatenating notesJohan Herland, Sep 29, 2010
  15. 07/18 builtin/notes.c: Split notes ref DWIMmery into a separate functionJohan Herland, Sep 29, 2010
  16. Jonathan NiederOct 5, 2010
  17. Johan HerlandOct 7, 2010
  18. 08/18 git notes merge: Initial implementation handling trivial merges onlyJohan Herland, Sep 29, 2010
  19. Test script style (Re: [PATCH 08/18] git notes merge: Initial implementation handling trivial merges only)Jonathan Nieder, Oct 7, 2010
  20. Junio C HamanoOct 7, 2010
  21. Jonathan NiederOct 7, 2010
  22. Johan HerlandOct 8, 2010
  23. Jonathan NiederOct 9, 2010
  24. Johan HerlandOct 21, 2010
  25. 09/18 builtin/notes.c: Refactor creation of notes commits.Johan Herland, Sep 29, 2010
  26. 10/18 git notes merge: Handle real, non-conflicting notes mergesJohan Herland, Sep 29, 2010
  27. Ævar Arnfjörð BjarmasonSep 29, 2010
  28. Johan HerlandSep 29, 2010
  29. 11/18 git notes merge: Add automatic conflict resolvers (ours, theirs, union)Johan Herland, Sep 29, 2010
  30. Stephen BoydOct 2, 2010
  31. Johan HerlandOct 4, 2010
  32. 12/18 Documentation: Preliminary docs on 'git notes merge'Johan Herland, Sep 29, 2010
  33. Stephen BoydOct 2, 2010
  34. Johan HerlandOct 4, 2010
  35. 13/18 git notes merge: Manual conflict resolution, part 1/2Johan Herland, Sep 29, 2010
  36. 14/18 git notes merge: Manual conflict resolution, part 2/2Johan Herland, Sep 29, 2010
  37. Ævar Arnfjörð BjarmasonSep 29, 2010
  38. Johan HerlandSep 29, 2010
  39. 15/18 git notes merge: List conflicting notes in notes merge commit messageJohan Herland, Sep 29, 2010
  40. 16/18 git notes merge: --commit should fail if underlying notes ref has movedJohan Herland, Sep 29, 2010
  41. 17/18 git notes merge: Add another auto-resolving strategy: "cat_sort_uniq"Johan Herland, Sep 29, 2010
  42. 18/18 git notes merge: Add testcases for merging notes trees at different fanoutsJohan Herland, Sep 29, 2010
  43. Sverre RabbelierSep 29, 2010
  44. Johan HerlandSep 29, 2010
  45. Sverre RabbelierSep 29, 2010
  46. Johan HerlandSep 29, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.