On Tue, Jan 22, 2013 at 2:27 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> writes: > >> :/abc may mean two things: >> >> - as a revision, it means the revision that has "abc" in commit >> message. >> >> - as a pathpec, it means "abc" from root. >> >> Currently we see ":/abc" as a rev (most of the time), but never see it >> as a pathspec even if "abc" exists and "git log :/abc" will gladly >> take ":/abc" as rev even it's ambiguous. This patch makes it: >> >> - ambiguous when "abc" exists on worktree >> - a rev if abc does not exist on worktree >> - a path if abc is not found in any commits (although better use > > The "any commits" above sounds very scary. Are you really going to > check against all the commits? If I remember correctly :/ will search through commit chains until it finds a commit that matches. So :/non-existent-string definitely searches through all commits. >> "--" to avoid ambiguation because searching through commit DAG is >> expensive) >> >> A plus from this patch is, because ":/" never matches anything as a >> rev, it is never considered a valid rev and because root directory >> always exists, ":/" is always unambiguously seen as a pathspec. > > That is the primary plus in practice, I think, and it is a big one. > > When naming a directory that belongs to a different subdirectory > hierarchy, typing ":/that/directory/name" is not any easier than > having your shell help you complete "../../that/directory/name"; I > suspect nobody uses the relative-to-root notation to name anything > but the root in real life. As I noted in the patch comment, I do copy/paste repo-absolute paths from a diff quite often (just skip the "a" and "b" prefix). Sometimes I hope "git diff" has an option to produce relative paths.. -- Duy -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html