threads / bug / 7097

[BUG] git-diff-tree or git-commit: wrong diff(stat)

Subject: [BUG] git-diff-tree or git-commit: wrong diff(stat)

## tl;dr

3 messages between Mar 5, 2007 and Mar 5, 2007.

replies: 2people: 2as markdown or json

Matthias Lederhofer· Mar 5, 2007, 20:07 UTC · lore
git-commit.sh uses git-diff-tree [options] HEAD --.  The '--' was
added in 521f9c4d to prevent problems when HEAD exists as a file but
git-diff-tree shows only differences below the current directory when
'--' is used.  Hence git-commit in a subdirectory shows only stats for
the subdirectory.  Example:
~/foo% git init
Initialized empty Git repository in .git/
~/foo% mkdir d
~/foo% seq 1 10 | tee a > d/b
~/foo% git add a d/b
~/foo% cd d
~/foo/d% git commit -m blub
Created initial commit 49d6f2eac51d3a2665a539adc2cc8676e5b14a3d
 1 files changed, 10 insertions(+), 0 deletions(-)
 create mode 100644 d/b
Junio C Hamano· Mar 5, 2007, 20:22 UTC · re: Matthias Lederhofer · lore

Re: [BUG] git-diff-tree or git-commit: wrong diff(stat)

Matthias Lederhofer <matled@gmx.net> writes:
Show 5 quoted lines
> git-commit.sh uses git-diff-tree [options] HEAD --.  The '--' was
> added in 521f9c4d to prevent problems when HEAD exists as a file but
> git-diff-tree shows only differences below the current directory when
> '--' is used.  Hence git-commit in a subdirectory shows only stats for
> the subdirectory.

A cd_to_toplevel before that diff-tree should fix that, shouldn't it?

For that matter, I think the commit hook should be run from a known environment without getting affected by the user running git-commit from a random subdirectory, and so should rerere. So how about....

 git-commit.sh |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/git-commit.sh b/git-commit.sh
index be3677c..b8c00b8 100755
--- a/git-commit.sh
+++ b/git-commit.sh
@@ -622,6 +622,9 @@ else
 fi
 ret="$?"
 rm -f "$GIT_DIR/COMMIT_MSG" "$GIT_DIR/COMMIT_EDITMSG" "$GIT_DIR/SQUASH_MSG"
+
+cd_to_toplevel
+
 if test -d "$GIT_DIR/rr-cache"
 then
 	git-rerere
Matthias Lederhofer· Mar 5, 2007, 22:08 UTC · re: Junio C Hamano · lore

Re: [BUG] git-diff-tree or git-commit: wrong diff(stat)

Junio C Hamano <junkio@cox.net> wrote:
> A cd_to_toplevel before that diff-tree should fix that,
> shouldn't it?

That should fix this problem. But anyway I think it is strange that `git diff` and `git diff --` differ in subdirectories (the latter shows only changes for the current directory).

← back to recent threads