Re: [BUG/RFC] Raw diff output format (git-diff-tree) and --relative[=<path>] option
- From
Jeff King <peff@peff.net>
- Date
- Jul 8, 2010, 14:23 UTC
- Message-ID
- <20100708142341.GA9991@coredump.intra.peff.net>
- In-Reply-To
- <201007081419.42702.jnareb@gmail.com>
On Thu, Jul 08, 2010 at 02:19:42PM +0200, Jakub Narebski wrote:
> Nevertheless for the patch output format both "git diff --relative=sub" > and "git diff --relative=sub/" give the same output, without 'b//quux'. > The same IMHO should be done for raw output format, so we don't have > '/quux' but 'quux'.
Hmm. That is because the diff output properly eliminates the double "/". But AFAICT, all of the following do what I would expect:
git diff --relative=sub git diff --relative=sub/ ;# same as above git diff --relative=foo- ;# yields "a/10" for file "foo-10"
Doing
git diff --relative=sub --stat
shows the same issue as your --raw version, as does --name-only. I think the right solution is to clean up a leading "/" for those cases. That leaves the possibility for non-directory prefixes, but should do what the user wants in the directory case (since a leading "/" is nonsensical).
Or was that what you had in mind the whole time? My impression was that you wanted --relative=foo to always be equivalent to --relative=foo/. The subtle difference is that I want the "/" removed only if it is the next character (or another way of thinking about it is to append "/" to the prefix only if it is an actual directory).
-Peff