git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* format-patch on permission change gives empty patch
@ 2010-10-07  0:37 David Miller
  2010-10-07  0:40 ` David Miller
  0 siblings, 1 reply; 9+ messages in thread
From: David Miller @ 2010-10-07  0:37 UTC (permalink / raw)
  To: git


When I ask git to format-patch a commit that is just a file
permission change, it ends up generating an empty file, not
even the commit message is included.

davem@sunset:~/src/GIT/net-2.6$ git show
commit a5dbc62ed61bf4cc57e22b78e5794880f1c74b90
Author: Joe Perches <joe@perches.com>
Date:   Wed Oct 6 17:32:49 2010 -0700

    Documentation/networking/ixgbevf.txt: Change file permissions to 644
    
    Signed-off-by: Joe Perches <joe@perches.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
You have new mail in /var/mail/davem
davem@sunset:~/src/GIT/net-2.6$ git format-patch HEAD^
0001-Documentation-networking-ixgbevf.txt-Change-file-per.patch
davem@sunset:~/src/GIT/net-2.6$ ls -l 0001-Documentation-networking-ixgbevf.txt-Change-file-per.patch 
-rw-r--r-- 1 davem davem 0 Oct  6 17:36 0001-Documentation-networking-ixgbevf.txt-Change-file-per.patch
davem@sunset:~/src/GIT/net-2.6$ git version
git version 1.7.3.1

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

* Re: format-patch on permission change gives empty patch
  2010-10-07  0:37 format-patch on permission change gives empty patch David Miller
@ 2010-10-07  0:40 ` David Miller
  2010-10-07  4:13   ` Junio C Hamano
  0 siblings, 1 reply; 9+ messages in thread
From: David Miller @ 2010-10-07  0:40 UTC (permalink / raw)
  To: git

From: David Miller <davem@davemloft.net>
Date: Wed, 06 Oct 2010 17:37:14 -0700 (PDT)

> 
> When I ask git to format-patch a commit that is just a file
> permission change, it ends up generating an empty file, not
> even the commit message is included.

Ok it turns out that the commit in question was a NOP since the file
permissions didn't change.

But even if the patch is truly empty, format-patch should still give
me the commit message shouldn't it?

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

* Re: format-patch on permission change gives empty patch
  2010-10-07  0:40 ` David Miller
@ 2010-10-07  4:13   ` Junio C Hamano
  2010-10-07  4:40     ` Junio C Hamano
  0 siblings, 1 reply; 9+ messages in thread
From: Junio C Hamano @ 2010-10-07  4:13 UTC (permalink / raw)
  To: David Miller; +Cc: git

David Miller <davem@davemloft.net> writes:

> From: David Miller <davem@davemloft.net>
> Date: Wed, 06 Oct 2010 17:37:14 -0700 (PDT)
>
>> 
>> When I ask git to format-patch a commit that is just a file
>> permission change, it ends up generating an empty file, not
>> even the commit message is included.
>
> Ok it turns out that the commit in question was a NOP since the file
> permissions didn't change.
>
> But even if the patch is truly empty, format-patch should still give
> me the commit message shouldn't it?

Probably; we have strongly encouraged people not to commit no-op, so I
guess nobody stumbled upon this corner case.

Perhaps something like this?

 builtin/log.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/builtin/log.c b/builtin/log.c
index 22d1290..6baba7d 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -1057,6 +1057,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 	rev.verbose_header = 1;
 	rev.diff = 1;
 	rev.no_merges = 1;
+	rev.always_show_header = 1;
 	DIFF_OPT_SET(&rev.diffopt, RECURSIVE);
 	rev.subject_prefix = fmt_patch_subject_prefix;
 	memset(&s_r_opt, 0, sizeof(s_r_opt));

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

* Re: format-patch on permission change gives empty patch
  2010-10-07  4:13   ` Junio C Hamano
@ 2010-10-07  4:40     ` Junio C Hamano
  2010-10-07  8:15       ` Sverre Rabbelier
  2010-10-07 19:06       ` Nicolas Pitre
  0 siblings, 2 replies; 9+ messages in thread
From: Junio C Hamano @ 2010-10-07  4:40 UTC (permalink / raw)
  To: git; +Cc: David Miller

Junio C Hamano <gitster@pobox.com> writes:

> David Miller <davem@davemloft.net> writes:
>
>> From: David Miller <davem@davemloft.net>
>> Date: Wed, 06 Oct 2010 17:37:14 -0700 (PDT)
>>
>>> 
>>> When I ask git to format-patch a commit that is just a file
>>> permission change, it ends up generating an empty file, not
>>> even the commit message is included.
>>
>> Ok it turns out that the commit in question was a NOP since the file
>> permissions didn't change.
>>
>> But even if the patch is truly empty, format-patch should still give
>> me the commit message shouldn't it?
>
> Probably; we have strongly encouraged people not to commit no-op, so I
> guess nobody stumbled upon this corner case.
>
> Perhaps something like this?

Actually, I have a feeling that this is not merely a corner case we didn't
care about.

A half-good news is that format-patch already takes --always command line
option to generate a message out of an empty commit, but because it cannot
be applied with "am", it is rather pointless.

BUT.

The weatherbaloon patch is probably a bad idea.  "git rebase", especially
when rebasing a side branch imported from some foreign SCM, would rather
badly break with this patch, because its "format-patch | am" pipeline
depends on format-patch to skip a no-op commit.  Otherwise, "am" will
complain about a patchless message.  So in a sense, the current behaviour
is internally consistent and deliberately so.

I have a mixed feeling about where to go next.

 (1) Treat "rebase" as a way to reproduce a reasonable history; the
     current behaviour to drop empty commits is consistent with this view,
     as a history with an empty commit is _not_ entirely reasonable.

 (2) Treat "rebase" as a way to reproduce history faithfully, even an
     unreasonable one.  We could teach "--allow-empty" to "am", and
     rewrite the pipeline as "format-patch --always | am --allow-empty" to
     implement it.

I think I would eventually end up doing the latter, but not tonight.

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

* Re: format-patch on permission change gives empty patch
  2010-10-07  4:40     ` Junio C Hamano
@ 2010-10-07  8:15       ` Sverre Rabbelier
  2010-10-07 10:05         ` Jakub Narebski
  2010-10-07 19:06       ` Nicolas Pitre
  1 sibling, 1 reply; 9+ messages in thread
From: Sverre Rabbelier @ 2010-10-07  8:15 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, David Miller

Heya,

On Thu, Oct 7, 2010 at 06:40, Junio C Hamano <gitster@pobox.com> wrote:
>  (2) Treat "rebase" as a way to reproduce history faithfully, even an
>     unreasonable one.  We could teach "--allow-empty" to "am", and
>     rewrite the pipeline as "format-patch --always | am --allow-empty" to
>     implement it.

Wouldn't we then have to keep adding options for other corner cases?
Perhaps a '--plumbing' flag that makes format-patch behave sanely
(e.g., also do stuff like, turn off color and whatnot) and that makes
'git am' accept everything it knows how to understand?

-- 
Cheers,

Sverre Rabbelier

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

* Re: format-patch on permission change gives empty patch
  2010-10-07  8:15       ` Sverre Rabbelier
@ 2010-10-07 10:05         ` Jakub Narebski
  2010-10-07 10:12           ` Sverre Rabbelier
  0 siblings, 1 reply; 9+ messages in thread
From: Jakub Narebski @ 2010-10-07 10:05 UTC (permalink / raw)
  To: Sverre Rabbelier; +Cc: Junio C Hamano, git, David Miller, Jakub Narebski

Sverre Rabbelier <srabbelier@gmail.com> writes:
> On Thu, Oct 7, 2010 at 06:40, Junio C Hamano <gitster@pobox.com> wrote:

> >  (2) Treat "rebase" as a way to reproduce history faithfully, even an
> >     unreasonable one.  We could teach "--allow-empty" to "am", and
> >     rewrite the pipeline as "format-patch --always | am --allow-empty" to
> >     implement it.
> 
> Wouldn't we then have to keep adding options for other corner cases?
> Perhaps a '--plumbing' flag that makes format-patch behave sanely
> (e.g., also do stuff like, turn off color and whatnot) and that makes
> 'git am' accept everything it knows how to understand?

Hmmm... doesn't rebase pipeline use "format-patch --rebasing" (where
'--rebasing' is internal option deliberately left undocumented)?

-- 
Jakub Narebski
Poland
ShadeHawk on #git

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

* Re: format-patch on permission change gives empty patch
  2010-10-07 10:05         ` Jakub Narebski
@ 2010-10-07 10:12           ` Sverre Rabbelier
  0 siblings, 0 replies; 9+ messages in thread
From: Sverre Rabbelier @ 2010-10-07 10:12 UTC (permalink / raw)
  To: Jakub Narebski; +Cc: Junio C Hamano, git, David Miller

Heya,

On Thu, Oct 7, 2010 at 12:05, Jakub Narebski <jnareb@gmail.com> wrote:
> Hmmm... doesn't rebase pipeline use "format-patch --rebasing" (where
> '--rebasing' is internal option deliberately left undocumented)?

If so, that's exactly what I mean :)

-- 
Cheers,

Sverre Rabbelier

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

* Re: format-patch on permission change gives empty patch
  2010-10-07  4:40     ` Junio C Hamano
  2010-10-07  8:15       ` Sverre Rabbelier
@ 2010-10-07 19:06       ` Nicolas Pitre
  2010-10-07 20:29         ` Junio C Hamano
  1 sibling, 1 reply; 9+ messages in thread
From: Nicolas Pitre @ 2010-10-07 19:06 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, David Miller

On Wed, 6 Oct 2010, Junio C Hamano wrote:

> I have a mixed feeling about where to go next.
> 
>  (1) Treat "rebase" as a way to reproduce a reasonable history; the
>      current behaviour to drop empty commits is consistent with this view,
>      as a history with an empty commit is _not_ entirely reasonable.

But a file mode change isn't exactly an empty commit, no?


Nicolas

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

* Re: format-patch on permission change gives empty patch
  2010-10-07 19:06       ` Nicolas Pitre
@ 2010-10-07 20:29         ` Junio C Hamano
  0 siblings, 0 replies; 9+ messages in thread
From: Junio C Hamano @ 2010-10-07 20:29 UTC (permalink / raw)
  To: Nicolas Pitre; +Cc: git, David Miller

Nicolas Pitre <nico@fluxnic.net> writes:

> On Wed, 6 Oct 2010, Junio C Hamano wrote:
>
>> I have a mixed feeling about where to go next.
>> 
>>  (1) Treat "rebase" as a way to reproduce a reasonable history; the
>>      current behaviour to drop empty commits is consistent with this view,
>>      as a history with an empty commit is _not_ entirely reasonable.
>
> But a file mode change isn't exactly an empty commit, no?

The second message from DaveM:

    Message-ID: <20101006.174008.70175671.davem@davemloft.net>

    Ok it turns out that the commit in question was a NOP since the file
    permissions didn't change.

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

end of thread, other threads:[~2010-10-07 20:29 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-10-07  0:37 format-patch on permission change gives empty patch David Miller
2010-10-07  0:40 ` David Miller
2010-10-07  4:13   ` Junio C Hamano
2010-10-07  4:40     ` Junio C Hamano
2010-10-07  8:15       ` Sverre Rabbelier
2010-10-07 10:05         ` Jakub Narebski
2010-10-07 10:12           ` Sverre Rabbelier
2010-10-07 19:06       ` Nicolas Pitre
2010-10-07 20:29         ` Junio C Hamano

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).