All of lore.kernel.org
 help / color / mirror / Atom feed
* Patches produced with format-patch under specific config aren't applicable
@ 2022-09-06 13:45 Felipe Oliveira Carvalho
  2022-09-07  2:19 ` Đoàn Trần Công Danh
  0 siblings, 1 reply; 2+ messages in thread
From: Felipe Oliveira Carvalho @ 2022-09-06 13:45 UTC (permalink / raw)
  To: git

Patches produced with format-patch under specific config aren't applicable

Inbox
I have diff.noprefix=true on my ~/.gitconfig

    [diff]
        noprefix = true

I generate a .patch file from the last commit with

    git format-patch HEAD^

Due to noprefix=true, I get this line in the patch file

    diff --git src/filesystem/PhutilProcessQuery.php
src/filesystem/PhutilProcessQuery.php

instead of the default

    diff --git a/src/filesystem/PhutilProcessQuery.php
b/src/filesystem/PhutilProcessQuery.php

So when I try to apply that patch, I get

    $ git apply --check ./0001-my.patch
    error: filesystem/PhutilProcessQuery.php: No such file or directory

In trying to remove the a/ and b/ that apply expects, it removes src/
from the path, then fails to find filesystem/PhutilProcessQuery.php.

As a mitigation, I'm setting diff.noprefix to false, but a more robust
solution would be for the format-patch command to ignore this setting
as patches are expected to work on repos configured by different
people.

git version 2.37.3
--
Felipe

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Patches produced with format-patch under specific config aren't applicable
  2022-09-06 13:45 Patches produced with format-patch under specific config aren't applicable Felipe Oliveira Carvalho
@ 2022-09-07  2:19 ` Đoàn Trần Công Danh
  0 siblings, 0 replies; 2+ messages in thread
From: Đoàn Trần Công Danh @ 2022-09-07  2:19 UTC (permalink / raw)
  To: Felipe Oliveira Carvalho; +Cc: git

On 2022-09-06 10:45:41-0300, Felipe Oliveira Carvalho <felipekde@gmail.com> wrote:
> Patches produced with format-patch under specific config aren't applicable
> 
> Inbox
> I have diff.noprefix=true on my ~/.gitconfig
> 
>     [diff]
>         noprefix = true
> 
> I generate a .patch file from the last commit with
> 
>     git format-patch HEAD^
> 
> Due to noprefix=true, I get this line in the patch file
> 
>     diff --git src/filesystem/PhutilProcessQuery.php
> src/filesystem/PhutilProcessQuery.php
> 
> instead of the default
> 
>     diff --git a/src/filesystem/PhutilProcessQuery.php
> b/src/filesystem/PhutilProcessQuery.php
> 
> So when I try to apply that patch, I get
> 
>     $ git apply --check ./0001-my.patch
>     error: filesystem/PhutilProcessQuery.php: No such file or directory
> 
> In trying to remove the a/ and b/ that apply expects, it removes src/
> from the path, then fails to find filesystem/PhutilProcessQuery.php.
> 
> As a mitigation, I'm setting diff.noprefix to false, but a more robust
> solution would be for the format-patch command to ignore this setting
> as patches are expected to work on repos configured by different
> people.

You can use "-p0" with git-am or git-apply to apply such patches.

There's a RFE in the past to add log.noprefix and/or format.noprefix
but it seems noone interested enough to work on it [1]

1: https://lore.kernel.org/git/xmqqr1auvs7m.fsf@gitster.g/

-- 
Danh

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-09-07  2:19 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-09-06 13:45 Patches produced with format-patch under specific config aren't applicable Felipe Oliveira Carvalho
2022-09-07  2:19 ` Đoàn Trần Công Danh

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.