Re: [PATCH 2/2] grep: use slash for path delimiter, not colon
From: Jeff King <hidden>
Date: 2016-06-15 22:58:31
On Mon, Aug 26, 2013 at 05:03:04PM -0400, Phil Hord wrote:
quoted
$ git grep -l foo HEAD | head -1 HEAD:RelNotes/1.5.1.5.txt we still limit to the current directory, but the output does not note this (it should be "HEAD:./RelNotes/1.5.1.5.txt"). I think this bug is orthogonal to Phil's patch, though.Maybe not. My path completes the assumption that the L:R value returned by grep is an object ref; but Junio still thought it wasn't. I think this is another case where his view was correct.
I certainly assumed it was, because it is in most cases it is. And something like "HEAD:RelNotes/1.5.1.5.txt" certainly _looks_ like one, and is generated by the current git. And what is the point of coming up with a file listing if the names you return do not actually exist?
There's more bad news on this front.
$ cd Documentation
$ git grep -l foo HEAD .. | head -1
HEAD:../.gitignore
That's not a valid ref, either (though maybe it could be).
Yes, though we seem to normalize paths already. So the other entries
from that command are (in git.git):
HEAD:../.mailmap
HEAD:RelNotes/1.5.1.5.txt
So we could either:
1. Prepend the current path before normalizing to yield:
HEAD:.mailmap
HEAD:Documentation/RelNotes/1.5.1.5.txt
2. Teach the get_sha1 path parser about "..", and prepend "./" when we
are in a prefixed subdir.
HEAD:./../.mailmap
HEAD:./RelNotes/1.5.1.5.txt
-Peff