[PATCH/RFC 0/10] Add label for common ancestor to conflictstyle=diff3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jonathan Nieder wrote:
> Stefan Monnier wrote [1]:

>> I can't live without conflictstyle=diff3m and I'm very happy it exists.
>> But it has a little problem: it uses "|||||||\n" as a separator for the
>> ancestor version of the text, whereas diff3 uses "||||||| <ancestorname>\n".
>> The difference is harmless for a human (tho the <ancestorname> can sometimes
>> be useful, assuming it's meaningful), but it makes some tools fail to
>> recognize the conflict markers properly.
>> So please add a " BASE" or " ANCESTOR" after the "|||||||".
>
> No opinion on this myself.

I changed my mind; it looked like a useful and fun thing to do, so
here it is.

The bad news is that sometimes the labels for the ancestor are kind of
pointless, as in “merged common ancestors” for merge-recursive.  I am
not planning to improve this soon.  I’d be thrilled if someone changes
it to something like “merge of ac76d, 8d7ca9, and 81873”.

This patch series adds a label for the common ancestor to various
places git outputs conflict hunks:

 <<<<<<< ours
 Text from the current branch
 ||||||| original
 Text from the merge base
 =======
 Text from the remote branch
 >>>>>>> theirs

I am hoping this output will be more self explanatory, especially in
cases where it is not completely obvious to a naïve user what the
common ancestor would be, such as cherry-pick.

This passes all tests here and I tried to find any untested in-tree
consumers of conflict hunks that would be affected to make sure it
would be safe.  I would like to see it get some testing on other
machines, especially by people using merge tools and other programs
that parse conflicts.

Thoughts?
Jonathan Nieder (10):
  xdl_merge(): add optional ancestor label to diff3-style output
  merge-file --diff3: add a label for ancestor
  ll_merge(): add ancestor label parameter for diff3-style output
  checkout --conflict=diff3: add a label for ancestor
  merge_file(): add comment explaining behavior wrt conflict style
  merge_trees(): add ancestor label parameter for diff3-style output
  tests: document format of conflicts from checkout -m
  checkout -m --conflict=diff3: add a label for ancestor
  cherry-pick: add a label for ancestor
  merge-recursive: add a label for ancestor

 builtin/checkout.c    |    3 +-
 builtin/merge-file.c  |    1 +
 builtin/revert.c      |    1 +
 ll-merge.c            |   20 ++++++++------
 ll-merge.h            |    2 +-
 merge-file.c          |    8 +++++-
 merge-recursive.c     |   12 ++++++--
 merge-recursive.h     |    1 +
 rerere.c              |    4 +-
 t/t6023-merge-file.sh |    2 +-
 t/t7201-co.sh         |   69 ++++++++++++++++++++++++++++++++++++++++++++----
 xdiff/xdiff.h         |    1 +
 xdiff/xmerge.c        |   16 ++++++++++-
 13 files changed, 114 insertions(+), 26 deletions(-)

[1] http://bugs.debian.org/572720
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]