# [BUG] "--show-current-patch" return a mail instead of a patch

7 messages from 2019-10-22 to 2019-10-23. Participants: Jerome Pouiller, Junio C Hamano, Denton Liu.
Thread: https://gitlist.dev/t/52089

## Jerome Pouiller, 2019-10-22 10:18

Subject: [BUG] "--show-current-patch" return a mail instead of a patch
Message-ID: <2154192.LVDMpRDY2h@pc-42>
URL: https://gitlist.dev/e/2154192.LVDMpRDY2h%40pc-42

```
Hello all,

I try to use "git am" to apply a patch sent using "git send-email". This
patch does not apply properly. I try to use "git am --show-current-patch"
to understand the problem. However, since original mail is encoded in quoted-
printable, data returned by --show-current-patch is not a valid patch.

I expected that --show-current-patch would return decoded version of original 
mail or something that looks like the output of "git format-patch" or at least 
a valid patch. Thus, it could be processed with "git apply" or "patch".

Currently I run "git mailinfo" manually to get the patch, but it is not very 
handy.

(I use git version 2.20.1 from Debian buster)

Thank you,

-- 
Jérôme Pouiller


```

## Junio C Hamano, 2019-10-23 02:24

Subject: Re: [BUG] "--show-current-patch" return a mail instead of a patch
Message-ID: <xmqqzhhsi4g5.fsf@gitster-ct.c.googlers.com>
URL: https://gitlist.dev/e/xmqqzhhsi4g5.fsf%40gitster-ct.c.googlers.com
In-Reply-To: <2154192.LVDMpRDY2h@pc-42>

```
Jerome Pouiller <Jerome.Pouiller@silabs.com> writes:

> Hello all,
>
> I try to use "git am" to apply a patch sent using "git send-email". This
> patch does not apply properly. I try to use "git am --show-current-patch"
> to understand the problem. However, since original mail is encoded in quoted-
> printable, data returned by --show-current-patch is not a valid patch.

I agree that --show-current-patch is a misdesigned feature.  We'd be
doing a better service to our users if we documented that the patch
and log message are found at .git/rebase-apply/{patch,msg} instead
of trying to hide the path.

Unfortunately, it is likely that those who added that feature have
built their tooling around it to depend on its output being the full
e-mail message "am" was fed (and split by "git mailsplit").  So I do
not think we will be changing the output to the patch file only.

But even then, the documentation can be fixed without any backward
compatibility issues.  Perhaps like this?

 Documentation/git-am.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/git-am.txt b/Documentation/git-am.txt
index 6f6c34b0f4..f63b70325c 100644
--- a/Documentation/git-am.txt
+++ b/Documentation/git-am.txt
@@ -172,7 +172,7 @@ default.   You can use `--no-utf8` to override this.
 	untouched.
 
 --show-current-patch::
-	Show the patch being applied when "git am" is stopped because
+	Show the entire e-mail message "git am" has stopped at, because
 	of conflicts.
 
 DISCUSSION


```

## Jerome Pouiller, 2019-10-23 08:49

Subject: Re: [BUG] "--show-current-patch" return a mail instead of a patch
Message-ID: <1791353.RaUiIlXgNR@pc-42>
URL: https://gitlist.dev/e/1791353.RaUiIlXgNR%40pc-42
In-Reply-To: <xmqqzhhsi4g5.fsf@gitster-ct.c.googlers.com>

```
On Wednesday 23 October 2019 04:24:58 CEST Junio C Hamano wrote:
> Jerome Pouiller <Jerome.Pouiller@silabs.com> writes:
> > I try to use "git am" to apply a patch sent using "git send-email". This
> > patch does not apply properly. I try to use "git am --show-current-patch"
> > to understand the problem. However, since original mail is encoded in quoted-
> > printable, data returned by --show-current-patch is not a valid patch.
> 
> I agree that --show-current-patch is a misdesigned feature.  We'd be
> doing a better service to our users if we documented that the patch
> and log message are found at .git/rebase-apply/{patch,msg} instead
> of trying to hide the path.
> 
> Unfortunately, it is likely that those who added that feature have
> built their tooling around it to depend on its output being the full
> e-mail message "am" was fed (and split by "git mailsplit").  So I do
> not think we will be changing the output to the patch file only.
> 
> But even then, the documentation can be fixed without any backward
> compatibility issues.  Perhaps like this?
> 
>  Documentation/git-am.txt | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/Documentation/git-am.txt b/Documentation/git-am.txt
> index 6f6c34b0f4..f63b70325c 100644
> --- a/Documentation/git-am.txt
> +++ b/Documentation/git-am.txt
> @@ -172,7 +172,7 @@ default.   You can use `--no-utf8` to override this.
>         untouched.
> 
>  --show-current-patch::
> -       Show the patch being applied when "git am" is stopped because
> +       Show the entire e-mail message "git am" has stopped at, because
>         of conflicts.

I agree with you: I think that manpage and/or output of "git am" should
mention ".git/rebase-apply/patch" (that is exactly what I was looking
for).

Maybe documentation of --show-current-patch should be clarified with a
note like "This option is mainly for internal purpose. If you want to
get current patch, rely on .git/rebase-apply/patch".


-- 
Jérôme Pouiller


```

## Denton Liu, 2019-10-23 08:55

Subject: Re: [BUG] "--show-current-patch" return a mail instead of a patch
Message-ID: <20191023085503.GA652469@generichostname>
URL: https://gitlist.dev/e/20191023085503.GA652469%40generichostname
In-Reply-To: <1791353.RaUiIlXgNR@pc-42>

```
Hi Jerome,

On Wed, Oct 23, 2019 at 08:49:41AM +0000, Jerome Pouiller wrote:
> On Wednesday 23 October 2019 04:24:58 CEST Junio C Hamano wrote:
> > Jerome Pouiller <Jerome.Pouiller@silabs.com> writes:
> > > I try to use "git am" to apply a patch sent using "git send-email". This
> > > patch does not apply properly. I try to use "git am --show-current-patch"
> > > to understand the problem. However, since original mail is encoded in quoted-
> > > printable, data returned by --show-current-patch is not a valid patch.
> > 
> > I agree that --show-current-patch is a misdesigned feature.  We'd be
> > doing a better service to our users if we documented that the patch
> > and log message are found at .git/rebase-apply/{patch,msg} instead
> > of trying to hide the path.
> > 
> > Unfortunately, it is likely that those who added that feature have
> > built their tooling around it to depend on its output being the full
> > e-mail message "am" was fed (and split by "git mailsplit").  So I do
> > not think we will be changing the output to the patch file only.
> > 
> > But even then, the documentation can be fixed without any backward
> > compatibility issues.  Perhaps like this?
> > 
> >  Documentation/git-am.txt | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/Documentation/git-am.txt b/Documentation/git-am.txt
> > index 6f6c34b0f4..f63b70325c 100644
> > --- a/Documentation/git-am.txt
> > +++ b/Documentation/git-am.txt
> > @@ -172,7 +172,7 @@ default.   You can use `--no-utf8` to override this.
> >         untouched.
> > 
> >  --show-current-patch::
> > -       Show the patch being applied when "git am" is stopped because
> > +       Show the entire e-mail message "git am" has stopped at, because
> >         of conflicts.
> 
> I agree with you: I think that manpage and/or output of "git am" should
> mention ".git/rebase-apply/patch" (that is exactly what I was looking
> for).

I am currently have a WIP patchset that will print the location of the
failed patch file (.git/rebase-apply/patch) in the case of a failure as
well as the line number. Will this be sufficient for your purposes?

Thanks,

Denton

> 
> Maybe documentation of --show-current-patch should be clarified with a
> note like "This option is mainly for internal purpose. If you want to
> get current patch, rely on .git/rebase-apply/patch".
> 
> 
> -- 
> Jérôme Pouiller
> 

```

## Jerome Pouiller, 2019-10-23 10:15

Subject: Re: [BUG] "--show-current-patch" return a mail instead of a patch
Message-ID: <2720546.GJdFeal64i@pc-42>
URL: https://gitlist.dev/e/2720546.GJdFeal64i%40pc-42
In-Reply-To: <20191023085503.GA652469@generichostname>

```
On Wednesday 23 October 2019 10:55:03 CEST Denton Liu wrote:
> On Wed, Oct 23, 2019 at 08:49:41AM +0000, Jerome Pouiller wrote:
> > On Wednesday 23 October 2019 04:24:58 CEST Junio C Hamano wrote:
> > > Jerome Pouiller <Jerome.Pouiller@silabs.com> writes:
> > > > I try to use "git am" to apply a patch sent using "git send-email". This
> > > > patch does not apply properly. I try to use "git am --show-current-patch"
> > > > to understand the problem. However, since original mail is encoded in quoted-
> > > > printable, data returned by --show-current-patch is not a valid patch.
> > >
> > > I agree that --show-current-patch is a misdesigned feature.  We'd be
> > > doing a better service to our users if we documented that the patch
> > > and log message are found at .git/rebase-apply/{patch,msg} instead
> > > of trying to hide the path.
> > >
> > > Unfortunately, it is likely that those who added that feature have
> > > built their tooling around it to depend on its output being the full
> > > e-mail message "am" was fed (and split by "git mailsplit").  So I do
> > > not think we will be changing the output to the patch file only.
> > >
> > > But even then, the documentation can be fixed without any backward
> > > compatibility issues.  Perhaps like this?
> > >
> > >  Documentation/git-am.txt | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/Documentation/git-am.txt b/Documentation/git-am.txt
> > > index 6f6c34b0f4..f63b70325c 100644
> > > --- a/Documentation/git-am.txt
> > > +++ b/Documentation/git-am.txt
> > > @@ -172,7 +172,7 @@ default.   You can use `--no-utf8` to override this.
> > >         untouched.
> > >
> > >  --show-current-patch::
> > > -       Show the patch being applied when "git am" is stopped because
> > > +       Show the entire e-mail message "git am" has stopped at, because
> > >         of conflicts.
> >
> > I agree with you: I think that manpage and/or output of "git am" should
> > mention ".git/rebase-apply/patch" (that is exactly what I was looking
> > for).
> 
> I am currently have a WIP patchset that will print the location of the
> failed patch file (.git/rebase-apply/patch) in the case of a failure as
> well as the line number. Will this be sufficient for your purposes?

It would be a clear improvement (the perfection would be to be able to
use mergetool with git-am :) ).

Thank you,

-- 
Jérôme Pouiller


```

## Denton Liu, 2019-10-23 11:09

Subject: Re: [BUG] "--show-current-patch" return a mail instead of a patch
Message-ID: <20191023110951.GA716725@generichostname>
URL: https://gitlist.dev/e/20191023110951.GA716725%40generichostname
In-Reply-To: <2720546.GJdFeal64i@pc-42>

```
On Wed, Oct 23, 2019 at 10:15:15AM +0000, Jerome Pouiller wrote:
> On Wednesday 23 October 2019 10:55:03 CEST Denton Liu wrote:
> > I am currently have a WIP patchset that will print the location of the
> > failed patch file (.git/rebase-apply/patch) in the case of a failure as
> > well as the line number. Will this be sufficient for your purposes?
> 
> It would be a clear improvement (the perfection would be to be able to
> use mergetool with git-am :) ).

You should be able to do that with the --3way (-3) flag.

> 
> Thank you,
> 
> -- 
> Jérôme Pouiller
> 

```

## Jerome Pouiller, 2019-10-23 12:47

Subject: Re: [BUG] "--show-current-patch" return a mail instead of a patch
Message-ID: <2928191.nfgCUvMfDQ@pc-42>
URL: https://gitlist.dev/e/2928191.nfgCUvMfDQ%40pc-42
In-Reply-To: <20191023110951.GA716725@generichostname>

```
On Wednesday 23 October 2019 13:09:51 CEST Denton Liu wrote:
> On Wed, Oct 23, 2019 at 10:15:15AM +0000, Jerome Pouiller wrote:
> > On Wednesday 23 October 2019 10:55:03 CEST Denton Liu wrote:
> > > I am currently have a WIP patchset that will print the location of the
> > > failed patch file (.git/rebase-apply/patch) in the case of a failure as
> > > well as the line number. Will this be sufficient for your purposes?
> >
> > It would be a clear improvement (the perfection would be to be able to
> > use mergetool with git-am :) ).
> 
> You should be able to do that with the --3way (-3) flag.

AFAIK, it only works if index is found in local repository, which is
rarely the case :(

-- 
Jérôme Pouiller


```
