From: Jakub Narebski <jnareb@gmail.com>
To: Alex Riesen <raa.lkml@gmail.com>
Cc: git@vger.kernel.org, Junio C Hamano <junkio@cox.net>,
Johannes Schindelin <Johannes.Schindelin@gmx.de>,
Linus Torvalds <torvalds@linux-foundation.org>,
"Dana How" <danahow@gmail.com>
Subject: Re: log/show: relative pathnames do not work in rev:path
Date: Tue, 18 Dec 2007 22:24:26 +0100 [thread overview]
Message-ID: <200712182224.28152.jnareb@gmail.com> (raw)
In-Reply-To: <20071218204623.GC2875@steel.home>
On Tue, 18 Dec 2007, Alex Riesen wrote:
> Jakub Narebski, Tue, Dec 18, 2007 18:50:20 +0100:
>> Alex Riesen <raa.lkml@gmail.com> writes:
>>
>>> Noticed by a collegue of mine. Consider:
>>>
>>> $ cd $GIT/t
>>> $ git show 570f32266:t/test-lib.sh # works
>>> $ git show 570f32266:test-lib.sh # does not work
>>> $ git show 570f32266:./test-lib.sh # does not work
>>> $ git show 570f32266:/t/test-lib.sh # does not work
>>>
>>> Considering that the relative path names work as filters (and many
>>> agreed on that being useful), it would be nice to allow relative
>>> pathnames in blob specifications for git-show and git-cat-file.
>>>
>>> (besides the colon is a good delimiter, even tab-completion
>>> works with it)
>>
>> If you think about it a bit, relative path names nor absolute
>> path names does and should not work. 570f32266:t/test-lib.sh
>> means path t/test-lib.sh staring from 570f32266^{tree}. Where
>> you are in the filesystem is not important and matters not for
>> this syntax. Besides if you access other branch file might be
>> not in filesystem (deleted file, or disjoint branch with separate
>> contents like 'todo' or 'html' branch in git.git repository).
>
> Not convinced. It is *not* the plumbing problem I was trying to
> describe. They discussion, metaphorically, should not have left the
> command-line parser.
>
> I think that we have parsing of the blob locators at the wrong level:
> so that git-show, git-log and git-diff can handle its pathnames as
> they handle path filters (relative to cwd),
What cwd? <path> in <tree-ish>:<path> syntax is "relative" to <tree-ish>.
IMHO "<tree-ish>:<path>" should be considered (and is considered) as
one object: current working directory doesn't matter at all there,
contrary to "<tree-ish> -- <pathspec>" where it is natural that <pathspec>
is relative to current working directory.
What should git do in your proposal when we are on master branch in
Documentation subdirectory, and want to check TODO file in todo branch?
"git show todo:TODO" is most natural IMHO.
Note that for true <tree> as <tree-ish> you just don't know where
in the working area directory hierarchy <tree> can be. This means you
do't know relation of <tree> and <path> in <tree>:<path> to cwd.
> and git-cat-file,
> git-diff-tree, git-rev-list, etc can handle theirs always relative to
> the project root.
Not "relative to project root". Relative to tree-ish used on right hand
side in <tree-ish>:<path> extended SHA-1 syntax. It is usually project
root, because when you specify <commit> or <tag> as <tree-ish> it refers
to top/root directory of a project.
> I actually do not see any problem for git-show (being porcelain-level
> program) to treat *each and every* path anywhere relatively to the
> current directory. It is just more comfortable.
This breaks backward compatibility, hard. And IMHO breaks layers.
But if (big if) it was to be implemented, default behavior should be
unchanged, and relative to the cwd (layers!) should use new syntax,
for example
$ cd $GIT/t
$ git show 570f32266:t/test-lib.sh # works
$ git show 570f32266:test-lib.sh # should not work
$ git show 570f32266:./test-lib.sh # should work
$ git show 570f32266:/t/test-lib.sh # should perhaps work
Currently ":/<text>" (but not "<ref>:/<text>") is taken; see
git-rev-parse(1), "Specifying revisions".
--
Jakub Narebski
Poland
next prev parent reply other threads:[~2007-12-18 21:28 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-18 17:33 log/show: relative pathnames do not work in rev:path Alex Riesen
2007-12-18 17:50 ` Jakub Narebski
2007-12-18 20:46 ` Alex Riesen
2007-12-18 20:47 ` [PATCH] Simple support for tree entry specification with relative pathnames Alex Riesen
2007-12-18 20:49 ` [PATCH] Introduce pathexpand: syntax-level chdir into the given cwd Alex Riesen
2007-12-18 20:52 ` [PATCH] Use pathexpand to preparse the relative pathnames in blob references Alex Riesen
2007-12-18 21:06 ` Dana How
2007-12-19 14:37 ` Jeff King
2007-12-18 21:03 ` [PATCH] Simple support for tree entry specification with relative pathnames Dana How
2007-12-18 21:17 ` Alex Riesen
[not found] ` <56b7f5510712181539g27bd4fc9y632ebe74d91b8e82@mail.gmail.com>
2007-12-19 7:36 ` Alex Riesen
2007-12-18 21:24 ` Jakub Narebski [this message]
2007-12-18 21:53 ` log/show: relative pathnames do not work in rev:path Linus Torvalds
2007-12-18 22:08 ` Dana How
2007-12-18 22:29 ` Alex Riesen
2007-12-18 22:20 ` Junio C Hamano
2007-12-18 22:30 ` Dana How
2007-12-18 23:02 ` Johannes Schindelin
2007-12-19 20:45 ` Junio C Hamano
2007-12-18 22:20 ` Alex Riesen
2007-12-18 22:43 ` Johannes Schindelin
2007-12-18 23:03 ` Dana How
2007-12-18 23:26 ` Johannes Schindelin
2007-12-19 1:16 ` Linus Torvalds
2007-12-19 1:52 ` Dana How
2007-12-19 7:42 ` Alex Riesen
2007-12-19 11:23 ` Jakub Narebski
2007-12-19 17:21 ` Dana How
2007-12-19 18:47 ` Jakub Narebski
2007-12-19 13:40 ` [PATCH v0] sha1_name: grok <revision>:./<relative-path> Johannes Schindelin
2007-12-19 15:05 ` Jeff King
2007-12-19 17:40 ` Dana How
2007-12-19 18:09 ` Alex Riesen
2007-12-20 1:07 ` Junio C Hamano
2007-12-20 10:51 ` Johannes Schindelin
2007-12-21 14:17 ` Nguyen Thai Ngoc Duy
2007-12-21 17:50 ` Junio C Hamano
2007-12-21 20:15 ` Nguyen Thai Ngoc Duy
2007-12-22 14:33 ` Johannes Schindelin
2007-12-18 23:11 ` log/show: relative pathnames do not work in rev:path Jakub Narebski
2007-12-18 23:15 ` Dana How
2007-12-18 23:18 ` Junio C Hamano
2007-12-18 23:05 ` Jakub Narebski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200712182224.28152.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=danahow@gmail.com \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=raa.lkml@gmail.com \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).