git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: diffstat wierdness with 'git format-patch' output

From
Fredrik Kuivinen <freku045@student.liu.se>
Date
Feb 14, 2006, 22:30 UTC
Message-ID
<20060214223005.GA12652@c165.ib.student.liu.se>
In-Reply-To
<20060214055425.GA32261@kroah.com>
On Mon, Feb 13, 2006 at 09:54:25PM -0800, Greg KH wrote:
Show 36 quoted lines
> I was trying to use the built-in git tools to send patches off, instead
> of my horribly hacked up scripts that use the git low-level stuff, when
> I noticed that git format-patch's output confuses diffstat a bit, and
> causes it to add another line to it's count.
> 
> This isn't good when I do a 'diffstat -p1 *.txt' of the output and add
> it to an email to send off for someone to pull from, as the result will
> be off from what is really there.
> 
> Here's what I get:
> 
>  $ git format-patch -n origin..HEAD
>  0001-USB-fix-up-the-usb-early-handoff-logic-for-EHCI.txt
>  0002-USB-add-new-device-ids-to-ldusb.txt
>  0003-USB-change-ldusb-s-experimental-state.txt
>  0004-USB-PL2303-Leadtek-9531-GPS-Mouse.txt
>  0005-USB-sl811_cs-needs-platform_device-conversion-too.txt
>  0006-usb-storage-new-unusual_devs-entry.txt
>  0007-usb-storage-unusual_devs-entry.txt
>  0008-USB-unusual_devs.h-entry-TrekStor-i.Beat.txt
>  0009-USB-unusual_devs.h-entry-iAUDIO-M5.txt
>  0010-USB-unusual-devs-bugfix.txt
> 
>  $ git log | head -n 1
>  commit 16f05be7be0bf121491d83bd97337fe179b3b323
> 
>  $ git show 16f05be7be0bf121491d83bd97337fe179b3b323 | diffstat -p1
>   drivers/usb/storage/unusual_devs.h |   25 ++++++++++++++++++-------
>   1 file changed, 18 insertions(+), 7 deletions(-)
> 
>  $ diffstat -p1 0010-USB-unusual-devs-bugfix.txt
>   drivers/usb/storage/unusual_devs.h |   26 ++++++++++++++++++--------
>   1 file changed, 18 insertions(+), 8 deletions(-)
> 
> Any thoughts?
> 

If you don't have to generate the diffstat from the individual patches then

    git-diff-tree -p origin HEAD | git-apply --stat
should give you what you want.

BTW when I tried the above command on two random tags in the git tree I got:

    $ git-diff-tree -p v1.2.0 v1.0.8 | diffstat -p1 | tail -1
    165 files changed, 3913 insertions(+), 8092 deletions(-)
and
    $ git-diff-tree -p v1.2.0 v1.0.8 | git apply --stat | tail -1
    160 files changed, 3925 insertions(+), 8092 deletions(-)

The difference seems to be caused by diffstat which seems to think that all lines starting with '---' are diff headers. Hence, there are some bogus files in the diffstat output such as:

    [master]                                          |  177 ++
    [master^2~4]                                      |    9 
    [master^]                                         |   24 
    [mybranch]                                        |   56 
    [mybranch^]                                       |  616 +++++++
- Fredrik
Previous: Greg KH
Message 11 of 11 in “diffstat wierdness with 'git format-patch' output”
  1. Greg KHFeb 14, 2006
  2. Greg KHFeb 14, 2006
  3. Junio C HamanoFeb 14, 2006
  4. Greg KHFeb 14, 2006
  5. Junio C HamanoFeb 14, 2006
  6. Greg KHFeb 14, 2006
  7. Greg KHFeb 14, 2006
  8. Greg KHFeb 14, 2006
  9. Junio C HamanoFeb 14, 2006
  10. Greg KHFeb 18, 2006
  11. Fredrik KuivinenFeb 14, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.