Re: Applying a patch with a diff header in its commit message

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

 



On Tue, Jul 06 2021, Pratyush Yadav wrote:

> On 28/06/21 06:44PM, Felipe Contreras wrote:
>> Pratyush Yadav wrote:
>> > I have a patch at $DAYJOB that contains a diff header ("diff --git 
>> > a/...") in its commit message, and unfortunately it is not indented. So 
>> > naturally, git-am trips up and thinks it is the start of the main diff 
>> > and tries to apply the diff starting there. It does not apply and the 
>> > patch is rejected as being corrupt.
>> > 
>> > I know one option for me is to manually edit the patch and indent the 
>> > diff header. But I would like to avoid that if possible. Is there any 
>> > way to apply that patch as-is? Is it possible to tell git-am where to 
>> > start looking for the diff?
>> 
>> git apply?
>
> Sure, that is an option. But then I would have to copy/paste the commit 
> message and add the author information manually. Is there any way to do 
> this automatically? What if I have 100 commits like this?
>
> This is a valid Git commit. It would be nice if the Git email tooling 
> could handle it cleanly.

I don't think there is, but it could be fixed.

I had this happen to me the other day and ended up reading the relevant
parsing code, I think if it were a bit smarter we could handle the
common case, i.e. when we find "diff --git" or whatever it is keep
looking and see if we find another one, or perhaps have a "looks like
I'm at the diffstat" heuristic where we'll prefer the "diff --git" that
follows a "---" line, if there' two of them (that's also going to be
ambiguous, but both of them are less likely to happen to the same
commit).



[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