# git-diff-files -z output

6 messages from 2005-05-22 to 2005-05-22. Participants: Thomas Glanzmann, Junio C Hamano.
Thread: https://gitlist.dev/t/692

## Thomas Glanzmann, 2005-05-22 17:05

Subject: git-diff-files -z output
Message-ID: <20050522170540.GO15178@cip.informatik.uni-erlangen.de>
URL: https://gitlist.dev/e/20050522170540.GO15178%40cip.informatik.uni-erlangen.de

```
Hello,
is this correct?

(faui00u) [~/work/git/yagf] git-diff-files -z | xxd
0000000: 3a31 3030 3634 3420 3030 3030 3030 2031  :100644 000000 1
0000010: 6663 3834 3639 6366 6332 6631 3436 3332  fc8469cfc2f14632
0000020: 3734 3333 3363 3062 6562 6162 3065 3465  74333c0bebab0e4e
0000030: 3439 3562 6336 6220 3030 3030 3030 3030  495bc6b 00000000
0000040: 3030 3030 3030 3030 3030 3030 3030 3030  0000000000000000
0000050: 3030 3030 3030 3030 3030 3030 3030 3030  0000000000000000
0000060: 0064 6966 662e 6800 6469 6666 2e68 003a  .diff.h.diff.h.:
0000070: 3130 3037 3535 2031 3030 3735 3520 6464  100755 100755 dd
0000080: 3633 6533 3535 3463 3137 6431 3861 3039  63e3554c17d18a09
0000090: 3137 3931 3038 3264 3164 3632 3864 3835  1791082d1d628d85
00000a0: 3162 3933 3038 2030 3030 3030 3030 3030  1b9308 000000000
00000b0: 3030 3030 3030 3030 3030 3030 3030 3030  0000000000000000
00000c0: 3030 3030 3030 3030 3030 3030 3030 3000  000000000000000.
00000d0: 6769 7400 6769 7400                      git.git.

Eg the fields are seperated by space/tab and only the filenames by \0?

I am adopting to the new format.

Are the fields supposed to be seperated by space or tab?

static void diff_flush_raw(struct diff_filepair *p)
{
        /*
         * We used to reject rename/copy but new diff-raw can express them.
         */
        printf(":%06o %06o %s ",
               p->one->mode, p->two->mode, sha1_to_hex(p->one->sha1));
        printf("%s%c%s%c%s%c",
               sha1_to_hex(p->two->sha1), inter_name_termination,
               p->one->path, inter_name_termination,
               p->two->path, line_termination);
}


Gruesse,
	Thomas

```

## Junio C Hamano, 2005-05-22 17:17

Subject: Re: git-diff-files -z output
Message-ID: <7v3bsffadn.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7v3bsffadn.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <20050522170540.GO15178@cip.informatik.uni-erlangen.de>

```
>>>>> "TG" == Thomas Glanzmann <sithglan@stud.uni-erlangen.de> writes:

TG> I am adopting to the new format.
TG> Are the fields supposed to be seperated by space or tab?

Please see Documentation/diff-format.txt; find the below in the
archive for the full description of why we wanted this format
update.

    From:	Junio C Hamano <junkio@cox.net>
    Subject: Re: updated design for the diff-raw format.
    To:	git@vger.kernel.org
    Date:	Sat, 21 May 2005 16:17:33 -0700

    (second of the replayed message, with blessing from Linus)

    Date: Sat, 21 May 2005 11:24:31 -0700 (PDT)
    From: Linus Torvalds <torvalds@osdl.org>
    To: Junio C Hamano <junkio@cox.net>
    Subject: Re: [PATCH 3/3] Diff overhaul, adding the other half of copy detection.
    Message-ID: <Pine.LNX.4.58.0505211107160.2206@ppc970.osdl.org>

    On Sat, 21 May 2005, Junio C Hamano wrote:
    > 
    > Once we start to think of it this way, it becomes quite tempting
    > to change the diff-raw format to actually match the above
    > concept.

    I agree, and I was going to suggest changing the "raw" diff output for all
    the same reasons. So I think you should do it, as the old format was based
    on not really knowing where this all would take us. I think your proposed
    format is visually nicer, and it's obviously more flexible.



```

## Thomas Glanzmann, 2005-05-22 17:27

Subject: Re: git-diff-files -z output
Message-ID: <20050522172737.GB17570@cip.informatik.uni-erlangen.de>
URL: https://gitlist.dev/e/20050522172737.GB17570%40cip.informatik.uni-erlangen.de
In-Reply-To: <7v3bsffadn.fsf@assigned-by-dhcp.cox.net>

```
Hello,

> Please see Documentation/diff-format.txt; find the below in the
> archive for the full description of why we wanted this format
> update.

got it thanks. I read that eMail before. But I thought that the
tab -> space was a mistake, but it wasn't. So I am fine. I use the
following code fragment to match it. Gitweb and co have to be adopted as
well:

sub
process_git_diff_output
{
        my $str = shift || die("Need Input");

        my @in  = split("\0", $str);
        my @out = ();

        while (@in) {
                my @tmp = split(' ', shift(@in));
                push(@tmp, shift(@in), shift(@in));
                push(@out, [@tmp]);
        }

        return(@out);
}

	Thomas

```

## Thomas Glanzmann, 2005-05-22 17:32

Subject: Re: git-diff-files -z output
Message-ID: <20050522173243.GA18500@cip.informatik.uni-erlangen.de>
URL: https://gitlist.dev/e/20050522173243.GA18500%40cip.informatik.uni-erlangen.de
In-Reply-To: <20050522172737.GB17570@cip.informatik.uni-erlangen.de>

```
Hello,
this is better (it strips the colon from the first mode):

sub
process_git_diff_output
{
        my $str = shift || die("Need Input");

        my @in  = split("\0", $str);
        my @out = ();

        while (@in) {
                my @tmp = split(' ', shift(@in));
                $tmp[0] =~ s/^://g;
                push(@tmp, shift(@in), shift(@in));
                push(@out, [@tmp]);
        }

        return(@out);
}

	Thomas

```

## Thomas Glanzmann, 2005-05-22 17:38

Subject: Re: git-diff-files -z output
Message-ID: <20050522173846.GB18500@cip.informatik.uni-erlangen.de>
URL: https://gitlist.dev/e/20050522173846.GB18500%40cip.informatik.uni-erlangen.de
In-Reply-To: <20050522173243.GA18500@cip.informatik.uni-erlangen.de>

```
Hello,

>                 $tmp[0] =~ s/^://g;
                                   ^ -> This is useless.

	Thomas

```

## Junio C Hamano, 2005-05-22 17:49

Subject: Re: git-diff-files -z output
Message-ID: <7vwtprduc7.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vwtprduc7.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <20050522173243.GA18500@cip.informatik.uni-erlangen.de>

```
>>>>> "TG" == Thomas Glanzmann <sithglan@stud.uni-erlangen.de> writes:

I do not do Porcelain, but...

TG> this is better (it strips the colon from the first mode):

I think you are also stripping the colon at the beginning of the
filename if I am not mistaken.  Also posting only this part is
not very useful because I cannot tell what parameter this sub is
being fed.  I am presuming that you are either feeding a single
line from DIFF_FORMAT_HUMAN format output, or three lines
(unless dealing with 'U' entry in which case you have to do only
a single line) from DIFF_FORMAT_MACHINE format output.  When in
doubt, seeing what diff-helper does would help.


```
