diff-tree -r and new directories
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
Quoted 8 lines · Johannes Sixt
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'
newPerhaps you somehow did not have "-r" even though you thought you had?
Quoted 4 lines · Junio C Hamano
Quoted 2 lines · Johannes Sixt
In one of my scriptlets I have this:
Quoted 8 lines
Quoted 6 lines
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