diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2010-12-27 08:26:04 +0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-12-27 08:34:19 -0800 |
commit | 0ed748134748579a13cf27e1e8b3e55371bcd9dc (patch) | |
tree | 3f39dda690dc82e361b0e33df3bf59512d2bd3f3 /test-subprocess.c | |
parent | e7d1efbe9dc5c03e65a573d6f8c4d8804118eb0a (diff) | |
download | git-0ed748134748579a13cf27e1e8b3e55371bcd9dc.tar.gz |
setup_work_tree: adjust relative $GIT_WORK_TREE after moving cwd
When setup_work_tree() is called, it moves cwd to $GIT_WORK_TREE and
makes internal copy of $GIT_WORK_TREE absolute. The environt variable,
if set by user, remains unchanged. If the variable is relative, it is
no longer correct because its base dir has changed.
Instead of making $GIT_WORK_TREE absolute too, we just say "." and let
subsequent git processes handle it.
Reported-by: Michel Briand <michelbriand@free.fr>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'test-subprocess.c')
-rw-r--r-- | test-subprocess.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/test-subprocess.c b/test-subprocess.c new file mode 100644 index 0000000000..667d3e5079 --- /dev/null +++ b/test-subprocess.c @@ -0,0 +1,21 @@ +#include "cache.h" +#include "run-command.h" + +int main(int argc, char **argv) +{ + const char *prefix; + struct child_process cp; + int nogit = 0; + + prefix = setup_git_directory_gently(&nogit); + if (nogit) + die("No git repo found"); + if (!strcmp(argv[1], "--setup-work-tree")) { + setup_work_tree(); + argv++; + } + memset(&cp, 0, sizeof(cp)); + cp.git_cmd = 1; + cp.argv = (const char **)argv+1; + return run_command(&cp); +} |