Re: git format-patch lost the last part when branch merge
- From
Jeff King <peff@peff.net>
- Date
- Feb 24, 2021, 04:50 UTC
- Message-ID
- <YDXbIk5TLrHWQhwv@coredump.intra.peff.net>
- In-Reply-To
- <CABPp-BFa3CnOHMg4t99xMHWif8kMZJFcmHtLSNxZgAPaw1Cd=Q@mail.gmail.com>
On Tue, Feb 23, 2021 at 08:24:24PM -0800, Elijah Newren wrote:
Show 41 quoted lines
> > You could imagine ways for format-patch to represent the conflict > > resolution done in a merge, but it's not quite trivial, and nobody has > > done it yet. > > Are you referring to something like this (in the git.git repository)? > > $ git show --oneline --remerge-diff 42342b3ee6 > 42342b3ee6 Merge branch 'ab/mailmap' > diff --git a/t/t4203-mailmap.sh b/t/t4203-mailmap.sh > index 1bce961e07..6fb18a34b0 100755 > --- a/t/t4203-mailmap.sh > +++ b/t/t4203-mailmap.sh > @@ -257,16 +257,8 @@ test_expect_success 'No mailmap files, but configured' ' > > test_expect_success 'setup mailmap blob tests' ' > git checkout -b map && > -<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60ecad090d (Merge branch 'ps/fetch-atomic') > test_when_finished "git checkout main" && > - cat >just-bugs <<- EOF && > -|||||||||||||||||||||||||||||||| 72c4083ddf > - test_when_finished "git checkout master" && > - cat >just-bugs <<- EOF && > -================================ > - test_when_finished "git checkout master" && > cat >just-bugs <<-\EOF && > ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 4e168333a8 (shortlog: remove > unused(?) "repo-abbrev" feature) > Blob Guy <bugs@company.xx> > EOF > cat >both <<-EOF && > > > I agree that representing the conflict done in a merge is more > difficult than it sounds, but if you mean what I think you mean then I > disagree with the "nobody has done it yet" half of your statement. > :-) > > That said, I haven't attempted to tie this into format-patch in any > way, and have absolutely no plans to. (And --remerge-diff hasn't been > submitted upstream, because it depends on ort, and that still needs > reviews...)
I certainly was thinking of remerge-diff when I was writing all of that, but didn't want to get too far into the details. I think it's an absolutely wonderful way of showing off conflict resolution, and I'm excited to see it as a feature in Git. But:
- as you note, it isn't a public feature yet ;)
- while format-patch will learn about it because it knows all of the
diff formats, the fundamental point of format-patch is to produce
output that can be applied with git-am. So we'd only be halfway
there. - it does still get weird specifying a merge at all as part of a
series. Merging _what_ exactly? The topic branch made of the patches
that were just sent? A back-merge from some other commit on master
into the topic branch? And if the latter, wouldn't that depend
heavily on the base commit that the patches are applied on top of?So I left it as "you could imagine" and "it's not quite trivial". ;)
-Peff