Subject: Re: log/show: relative pathnames do not work in rev:path

From: Jakub Narebski <[email-masked]>
Date: Wed, 19 Dec 2007 12:23:41 +0100

On Wed, 19 Dec 2007, Dana How wrote:
> On Dec 18, 2007 5:16 PM, Linus Torvalds <[email-masked]> wrote:
>> On Tue, 18 Dec 2007, Dana How wrote:
>>
>>> The cases we are talking about are all subtrees of the working tree.
>>> There is a useful cwd suffix.
>>
>> No.
>>
>> The cases we're talking of are *not* subtrees of the working tree.
>>
>> The SHA1 of a commit may well be a totally disjoint tree. Try it in the
>> git repository with something like
> 
> Agreed,  but note you wrote *may*.
> 
> I'd like to move some stuff currently in a p4 repository into git.
> The directory structure within the repo is 13 levels deep;
> I didn't design it nor can I change it.
> 
> For the majority of the cases of interest to me git already accepts
> relative paths.  However,  one thing people do often in p4 (or any SCM)
> is look at (or compare, etc) specific revisions.  Unfortunately,  these are
> not part of branches or commits,  they are just file-specific revisions
> (don't get me started on p4 "branches").  The equivalent in git is
> to use a commit name (or a tag) and then name the file.  The
> basic commit:file syntax doesn't accept relative paths.  I am not
> specifically hung up on the commit:./path syntax;  I just want some
> notation that will get those 13 directories from $cwd instead of
> making me type them again.  Yes,  sometimes that might not make
> sense to request.
[...]

I think new feature like this should be postponed after 1.5.4 is out;
we are now in feature freeze (only bugfixes are accepted).

That said, does git-showrel solution proposed by  Johannes Schindelin
in
  Message-ID: <[email-masked]>
  http://permalink.gmane.org/gmane.comp.version-control.git/68840
work for you?

Below version of git-showrel script which uses proposed 'commit:./relpath'
syntax (it could be improved, of course):

cat > git-showrel <<\EOF
#!/bin/sh

rel=$(git rev-parse --show-prefix 2>/dev/null)
git show $(echo "$@" | sed -e "s!:./!:${rel}!")

EOF
-- 
Jakub Narebski
Poland