Re: [PATCH] Fix install-doc-quick target
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Aug 5, 2007, 14:44 UTC
- Message-ID
- <Pine.LNX.4.64.0708051533590.14781@racer.site>
- In-Reply-To
- <7vmyx6fohv.fsf_-_@assigned-by-dhcp.cox.net>
Hi,
On Sun, 5 Aug 2007, Junio C Hamano wrote:
Show 6 quoted lines
> If you say: > > git --work-tree=. foo > > without saying anything about GIT_DIR, shouldn't we run the > usual .git/ discovery, going up the directories?
Well, it seems natural.
The problem is that if you are in a bare repository, after setup_git_directory_gently() you will no longer be able to tell where you started from, but you are in the same directory that HEAD was found.
I had the following patch, but it breaks all kinds of tests :-(
Will keep you posted, Dscho
-- snipsnap --
setup.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/setup.c b/setup.c index d87e4e1..c627623 100644 --- a/setup.c +++ b/setup.c @@ -291,7 +291,7 @@ const char *setup_git_directory_gently(int *nongit_ok) if (!work_tree_env) inside_work_tree = 0; setenv(GIT_DIR_ENVIRONMENT, ".", 1); - return NULL; + goto ret; } chdir(".."); do { @@ -311,6 +311,7 @@ const char *setup_git_directory_gently(int *nongit_ok) if (!work_tree_env) inside_work_tree = 1; git_work_tree_cfg = xstrndup(cwd, offset); +ret: if (offset == len) return NULL; @@ -376,14 +377,15 @@ const char *setup_git_directory(void) /* If the work tree is not the default one, recompute prefix */ if (inside_work_tree < 0) { static char buffer[PATH_MAX + 1]; + const char *git_dir = get_git_dir(); char *rel; /* * When the git dir was determined automatically, it is * a relative path. */ - if (!getenv(GIT_DIR_ENVIRONMENT)) - set_git_dir(make_absolute_path(get_git_dir())); + if (!is_absolute_path(git_dir)) + set_git_dir(make_absolute_path(git_dir)); if (retval && chdir(retval)) die ("Could not jump back into original cwd");