Re: Improving merge of tricky conflicts

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

 



On Fri, Jan 15, 2021 at 04:50:08PM -1000, Martin von Zweigbergk wrote:

> > > I do this often enough to wonder if I should write a small "filter"
> > > that I can pipe a whole "diff3" <<< ... ||| ... === ... >>> region
> > > to and convert it into to diffs, but not often enough to motivate
> > > me to actually write one ;-).
> >
> > I would definitely have found that useful before (usually when one side
> > made a tiny one-line change and the other side deleted or drastically
> > changed a huge chunk).
> 
> FYI, I added something similar to Mercurial recently. Instead of two
> diffs, it shows one snapshot and one diff. See
> https://phab.mercurial-scm.org/D9551 for details. I've used it for a
> few weeks and it seems to be working pretty well. The drawback is
> mostly when you want to keep the side with the diff and ignore the
> other side, since you'll then have to drop the lines prefixed with "-"
> and then enter column-selection mode or something and delete the first
> character on each remaining line.

I've used the script I posted earlier in the thread several times in the
last 6 months or so, by replacing the conflict markers in the file I'm
resolving with the new output (basically "%!magic-diff3" in vim).

It is helpful. My biggest complaint is cleaning up the diff from the
marker after viewing it. In most cases where it's helpful, one side made
a large change (say, deleting or moving a big chunk of code) and the
other made a small one (tweaking one line in the moved chunk). The small
diff is useful, but the big one is not. And then after having viewed it,
I have to remove the whole big diff in my editor.

(It sounds like yours _replaces_ the conflict marker with the diff,
which is why you have to edit the diff. Mine is showing it in addition,
so you have to delete the diff).

I think rather than thinking of these as expanded conflict markers, it
would probably be a more useful workflow to just look at the diff in a
separate command (so just show the conflicts, not everything else, and
just show the diff). I suspect it could be made pretty nice with some
simple editor support (e.g., open a new buffer in the editor showing the
diff for just the current hunk, or even the current _half_ of the hunk
you're on).

-Peff




[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]

  Powered by Linux