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

Re: [PATCH 1/8] git-merge-file --ours, --theirs

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 26, 2009, 06:17 UTC
Message-ID
<7vy6ltdd2l.fsf@alter.siamese.dyndns.org>
In-Reply-To
<d243a513ffb8da4272f7a0e13a711f9b65195c25.1259201377.git.apenwarr@gmail.com>
"Avery Pennarun" <apenwarr@gmail.com> writes:
Show 6 quoted lines
> ...
> A larger problem is that this tends to encourage a bad workflow by
> allowing them to record such a mixed up half-merge result as a full commit
> without auditing.  This commit does not tackle this latter issue.  In git,
> we usually give long enough rope to users with strange wishes as long as
> the risky features is not on by default.
Typo/Grammo.  "risky features are not on by default".
> (Patch originally by Junio Hamano <gitster@pobox.com>.)
>
> Signed-off-by: Avery Pennarun <apenwarr@gmail.com>

Except for parse-optification, this one is more or less a verbatim copy of my patch, and I think I probably deserve an in-body "From: " line for this [PATCH 1/8], [PATCH 6/8] and [PATCH 8/8] to take the full authorship of them.

Show 12 quoted lines
> diff --git a/xdiff/xdiff.h b/xdiff/xdiff.h
> index 4da052a..2cce49d 100644
> --- a/xdiff/xdiff.h
> +++ b/xdiff/xdiff.h
> @@ -58,6 +58,11 @@ extern "C" {
>  #define XDL_MERGE_ZEALOUS_ALNUM 3
>  #define XDL_MERGE_LEVEL_MASK 0x0f
>  
> +/* merge favor modes */
> +#define XDL_MERGE_FAVOR_OURS 0x0010
> +#define XDL_MERGE_FAVOR_THEIRS 0x0020
> +#define XDL_MERGE_FAVOR(flags) (((flags)>>4) & 3)

This is a bad change. It forces the high-level layer of the resulting code to be aware that the favor bits are shifted by 4 and it is different from what the low-level layer expects. If I were porting it to parse-options, I would have kept OURS = 1 and THEIRS = 2 as the original patch, and instead did something like:

 	ret = xdl_merge(mmfs + 1, mmfs + 0, names[0], mmfs + 2, names[2],
-			&xpp, merge_level | merge_style, &result);
+			&xpp, XDL_MERGE_FLAGS(merge_level, merge_style, merge_favor), &result);
with an updated definition like this:
    #define XDL_MERGE_FLAGS(level, style, favor) ((level)|(style)|((favor)<<4)
Previous: Avery PennarunNext: Nanako Shiraishi
Message 22 of 26 in “The return of -Xours, -Xtheirs, -Xsubtree=dir”
  1. 0/8 The return of -Xours, -Xtheirs, -Xsubtree=dirAvery Pennarun, Nov 26, 2009
  2. 1/8 git-merge-file --ours, --theirsAvery Pennarun, Nov 26, 2009
  3. 2/8 builtin-merge.c: call exclude_cmds() correctly.Avery Pennarun, Nov 26, 2009
  4. 3/8 git-merge-recursive-{ours,theirs}Avery Pennarun, Nov 26, 2009
  5. 4/8 Teach git-merge to pass -X<option> to the backend strategy moduleAvery Pennarun, Nov 26, 2009
  6. 5/8 Teach git-pull to pass -X<option> to git-mergeAvery Pennarun, Nov 26, 2009
  7. 6/8 Make "subtree" part more orthogonal to the rest of merge-recursive.Avery Pennarun, Nov 26, 2009
  8. 7/8 Extend merge-subtree tests to test -Xsubtree=dir.Avery Pennarun, Nov 26, 2009
  9. 8/8 Document that merge strategies can now take their own optionsAvery Pennarun, Nov 26, 2009
  10. Junio C HamanoNov 26, 2009
  11. Junio C HamanoNov 26, 2009
  12. Junio C HamanoNov 26, 2009
  13. Junio C HamanoNov 26, 2009
  14. Avery PennarunNov 26, 2009
  15. Junio C HamanoNov 30, 2009
  16. Avery PennarunNov 30, 2009
  17. Junio C HamanoNov 30, 2009
  18. Junio C HamanoNov 30, 2009
  19. Avery PennarunNov 30, 2009
  20. Junio C HamanoNov 26, 2009
  21. Avery PennarunNov 26, 2009
  22. Junio C HamanoNov 26, 2009
  23. Nanako ShiraishiNov 26, 2009
  24. Junio C HamanoNov 26, 2009
  25. Nanako ShiraishiNov 26, 2009
  26. Avery PennarunNov 26, 2009

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.