Re: [PATCH v2 1/4] rev-parse: fix some options when executed from subpath of main tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Quoting Mike Rappazzo <rappazzo@xxxxxxxxx>:

On Fri, Apr 29, 2016 at 9:50 AM, SZEDER Gábor <szeder@xxxxxxxxxx> wrote:
Executing `git-rev-parse` with `--git-common-dir`, `--git-path <path>`,
or `--shared-index-path` from the root of the main worktree results in
a relative path to the git dir.

When executed from a subdirectory of the main tree, however, it incorrectly
returns a path which starts 'sub/path/.git'.

This is not completely true, because '--git-path ...' returns a
relative path starting with '.git':

 $ git -C t/ rev-parse --git-dir --git-path objects --git-common-dir
 /home/szeder/src/git/.git
 .git/objects
 t/.git

It's still wrong, of course.

I'll try to reword this to make it indicate that the value isn't
always incorrect.

Not sure I understand your intention about rewording, in particular that
"isn't always incorrect" part.  Just to make sure there is no
misunderstanding let's have a look at the two broken cases:

   $ git -C t/ rev-parse --git-common-dir
   t/.git

Obviously wrong.
This is what you correctly described in the commit message as
"incorrectly returns a path which starts 'sub/path/.git'.

   $ git -C t/ rev-parse --git-path objects
   .git/objects

Wrong as well.  It would be correct if we were at the top of the working
tree, but we are not.  It must be relative to the directory where '-C t/'
brought us.
Your description in the commit message implies that '--git-path <path>'
is wrong in the same way as '--git-common-dir' is, i.e. in this case
would also return the relative path starting with the subdirectory.
That is apparently not the case.

My point in the previous email was that both are wrong when executed in
a subdir of the working tree, but they are wrong in different ways.  And
they are always wrong when executed from a subdir of the working tree.
I would have described the current wrong behavior as:

   When executed from a subdirectory of the working tree, however,
   '--git-common-dir' incorrectly returns a path which starts
   'sub/path/.git', while '--git-path <path>' incorrectly returns a path
   relative to the top of the working tree.

(Still hasn't looked at shared index...)

Change this to return the
proper relative path to the git directory.

I think returning absolute paths would be better.  It is consistent
with the already properly working '--git-dir' option, which returns an
absolute path in this case.  Furthermore, both '--git-path ...' and
'--git-common-dir' already return absolute paths when run from a
subdirectory of the .git directory:

 $ git -C .git/refs rev-parse --git-dir --git-path objects --git-common-dir
 /home/szeder/src/git/.git
 /home/szeder/src/git/.git/objects
 /home/szeder/src/git/.git


I agree with this, but at one point Junio suggested that it should
return the relative path[1],

I wasn't aware of Junio's suggestion.

It shouldn't really matter in practice, because both the absolute and
relative paths will ultimately lead to the same place.  However, I
still think that for consistency's sake absolute paths would be better
when executed in a subdir of the working tree.


--
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



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]