Re: [PATCH 36/47] rev-parse: prints --git-dir relative to user's cwd
- From
Nguyen Thai Ngoc Duy <pclouds@gmail.com>
- Date
- Dec 22, 2010, 07:05 UTC
- Message-ID
- <AANLkTi=DPrQirbp3mOfQkU3Dx_eYmp1inVYx-GqqD9V5@mail.gmail.com>
- In-Reply-To
- <7vvd2m605f.fsf@alter.siamese.dyndns.org>
2010/12/22 Junio C Hamano <gitster@pobox.com>:
Show 41 quoted lines
> Nguyễn Thái Ngọc Duy <pclouds@gmail.com> writes:
>
>> git_dir variable in environment.c is relative to git's cwd, not user's
>> cwd. Convert the relative path (actualy by making it absolute path)
>> before printing out.
>>
>> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
>> Signed-off-by: Junio C Hamano <gitster@pobox.com>
>> ---
>> builtin/rev-parse.c | 6 +++++-
>> 1 files changed, 5 insertions(+), 1 deletions(-)
>>
>> diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c
>> index a5a1c86..65c287b 100644
>> --- a/builtin/rev-parse.c
>> +++ b/builtin/rev-parse.c
>> @@ -647,7 +647,11 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
>> static char cwd[PATH_MAX];
>> int len;
>> if (gitdir) {
>> - puts(gitdir);
>> + if (is_absolute_path(gitdir) || !prefix) {
>> + puts(gitdir);
>> + continue;
>> + }
>> + puts(make_absolute_path(gitdir));
>> continue;
>> }
>> if (!prefix) {
>
> I do not quite understand this change. I can obtain GIT_DIR in a relative
> form without this patch already:
>
> $ cd t/
> $ git --git-dir=../.git rev-parse --git-dir HEAD
> ../.git
> c7511731675da8b50c0d5243aa04a98c8a5ee316
>
> Could we please have a new test case to demonstrate what is broken without
> this patch?
>Um.. GIT_DIR can be changed by set_git_dir() inside setup_directory_gently() and be relative to git's internal (movable) cwd. The current code won't fall to that code path because GIT_DIR is made absolute in most cases. A few cases we keep GIT_DIR relative, we're sure cwd is not moved, or $GIT_DIR is not set and handled by rev-parse code.
I reverted the patch and ran "make test". Passed. When an attempt to make $GIT_DIR relative to worktree as much as possible happens, this may be needed. But for now, I'm OK if you take this patch out. I'll put it back on when I make such an attempt.
-- Duy