Thread (63 messages) flat view 63 messages, 5 authors, 2016-06-15

Re: [PATCH 36/47] rev-parse: prints --git-dir relative to user's cwd

From: Nguyen Thai Ngoc Duy <hidden>
Date: 2016-06-15 22:50:17

2010/12/22 Junio C Hamano [off-list ref]:
Nguyễn Thái Ngọc Duy  [off-list ref] writes:
quoted
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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
---
 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help