Re: Applying a patch with a diff header in its commit message
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Jul 6, 2021, 14:37 UTC
- Message-ID
- <87pmvv5ww8.fsf@evledraar.gmail.com>
- In-Reply-To
- <20210706081738.5th24lypiicnbckv@yadavpratyush.com>
On Tue, Jul 06 2021, Pratyush Yadav wrote:
Show 21 quoted lines
> 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).