Timo Hirvonen [off-list ref] writes:
This patch series cleans up diff output format options.
This makes it possible to use any combination of --raw, -p, --stat and
--summary options and they work as you would expect.
These patches passed all test and are for the next branch. Patches 6 and
7 are optional.
Thanks, very nicely done. Tentatively placed all of them in
"pu"; the first "clean-up" is in "master".
Here are a few problems I have seen:
- "git show --stat HEAD" gives '---' marker as Johannes and you
have already discussed (I do not mind this that much though);
- "--cc" seems to be quite broken. "git show v1.0.0" nor "git
diff-tree --pretty --cc v1.0.0" does not give the log
message, and gives something quite confused instead. I think
it is showing "-m -p" followed by "--cc".
We may find more minor breakages, in addition to these, but I am
reasonably sure we should be able to fix them in-tree.
Junio C Hamano [off-list ref] wrote:
Here are a few problems I have seen:
- "git show --stat HEAD" gives '---' marker as Johannes and you
have already discussed (I do not mind this that much though);
The patch I sent as a reply to 2/7 should fix this.
- "--cc" seems to be quite broken. "git show v1.0.0" nor "git
diff-tree --pretty --cc v1.0.0" does not give the log
message, and gives something quite confused instead. I think
it is showing "-m -p" followed by "--cc".
Sorry about that. I don't understand the --cc stuff very well but I try
to fix the bug.
--
http://onion.dynserv.net/~timo/
Junio C Hamano [off-list ref] writes:
Here are a few problems I have seen:
- "git show --stat HEAD" gives '---' marker as Johannes and you
have already discussed (I do not mind this that much though);
- "--cc" seems to be quite broken. "git show v1.0.0" nor "git
diff-tree --pretty --cc v1.0.0" does not give the log
message, and gives something quite confused instead. I think
it is showing "-m -p" followed by "--cc".
We may find more minor breakages, in addition to these, but I am
reasonably sure we should be able to fix them in-tree.
Further impressions, while with a clean index and working tree.
First the good ones (improvements).
- "git diff-index --patch-with-raw HEAD" gives empty result;
the traditional one shows one empty line.
- "git diff-tree -p --stat" and "git diff-tree --stat -p"
works, as you planned.
- "git diff-tree --root --patch-with-raw --summary" works; the
traditional one misses --summary.
- "git show --name-only HEAD" works; the traditional one always
does --cc -p; the same for "git show -s HEAD".
Regressions, most of the minor.
- "git diff-index -p --stat HEAD" gives one empty line; the
traditional one gives empty.
- "git diff-tree --patch-with-raw HEAD" for a non-merge commit
misses the empty line between raw and patch.
- "git diff-tree --cc HEAD" for an evil merge (a merge whose
result does not match either parents, e.g. v1.0.0) shows extra
two-tree diffs (presumably HEAD^1..HEAD and HEAD^2..HEAD)
before showing what is expected. The same for "git show".
- "git show --name-only HEAD" for an evil merge similarly shows
extra two-tree diffs in --name-only format before showing
what is expected. Presumably the same bug as the above.
- "git diff-tree -c HEAD" for an evil merge shows extra newline
after the output.
- Neither "git diff-tree -m -s HEAD" for a merge, "git diff-tree -s
HEAD" for a non-merge does not squelch the output; same for
"git whatchanged".
- "git log --raw HEAD" descends into subdirectories. It
instead should show the top-level tree differences.
- "git diff-tree --pretty --patch-with-stat HEAD" for a
non-merge misses "---\n" before stat (I think you are aware
of this).
- "git show --cc HEAD" for a merge should do "---\n", followed
by a stat for diff between HEAD^1..HEAD, followed by dense
combined-diff for HEAD.