# diff-tree -r and new directories

3 messages from 2008-04-10 to 2008-04-10. Participants: Johannes Sixt, Junio C Hamano.
Thread: https://gitlist.dev/t/13043

## Johannes Sixt, 2008-04-10 06:29

Subject: diff-tree -r and new directories
Message-ID: <47FDB3DB.8020705@viscovery.net>
URL: https://gitlist.dev/e/47FDB3DB.8020705%40viscovery.net

```
In one of my scriptlets I have this:

   git diff-tree -r --name-only --diff-filter=AM -z "$rev" HEAD --

and I had assumed that only files would ever be listed because of the -r
switch. But this is not true: If there is a new directory, it lists only
the directory's name instead of the files. Is this the intent? Is it worth
changing?

-- Hannes

```

## Junio C Hamano, 2008-04-10 06:52

Subject: Re: diff-tree -r and new directories
Message-ID: <7v1w5eyzeh.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7v1w5eyzeh.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <47FDB3DB.8020705@viscovery.net>

```
Johannes Sixt <j.sixt@viscovery.net> writes:

> In one of my scriptlets I have this:
>
>    git diff-tree -r --name-only --diff-filter=AM -z "$rev" HEAD --
>
> and I had assumed that only files would ever be listed because of the -r
> switch. But this is not true: If there is a new directory, it lists only
> the directory's name instead of the files. Is this the intent? Is it worth
> changing?

Hmm. you would need a better reproduction recipe than that.

    $ git init
    Initialized empty Git repository in .git/
    $ >file
    $ git add file
    $ git commit -a -m initial
    Created initial commit 2f9da65: initial
     0 files changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 file
    $ mkdir new
    $ >new/file
    $ git add new/file
    $ git commit -a -m second
    Created commit a1fa8fb: second
     0 files changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 new/file
    $ git diff-tree -r --name-only --diff-filter=AM -z HEAD^ HEAD |
      tr '\0' '\n'
    new/file
    $ git diff-tree --name-only --diff-filter=AM -z HEAD^ HEAD |
      tr '\0' '\n'
    new

Perhaps you somehow did not have "-r" even though you thought you had?

```

## Johannes Sixt, 2008-04-10 07:24

Subject: Re: diff-tree -r and new directories
Message-ID: <47FDC0CB.7050203@viscovery.net>
URL: https://gitlist.dev/e/47FDC0CB.7050203%40viscovery.net
In-Reply-To: <7v1w5eyzeh.fsf@gitster.siamese.dyndns.org>

```
Junio C Hamano schrieb:
> Johannes Sixt <j.sixt@viscovery.net> writes:
> 
>> In one of my scriptlets I have this:
>>
>>    git diff-tree -r --name-only --diff-filter=AM -z "$rev" HEAD --
>>
>> and I had assumed that only files would ever be listed because of the -r
>> switch. But this is not true: If there is a new directory, it lists only
>> the directory's name instead of the files. Is this the intent? Is it worth
>> changing?
> 
> Hmm. you would need a better reproduction recipe than that.

Heh. It turns out that the questionable directory is actually versioned by
git. My scriptlets have added it as a submodule while I looked in the
other direction:

  $ git diff --summary $rev.. -- . | cat
  create mode 160000 D/Project/foo

:-) Problem solved. Thank you.

-- Hannes

```
