summaryrefslogtreecommitdiff
path: root/test-subprocess.c
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2010-12-27 01:26:04 (GMT)
committerJunio C Hamano <gitster@pobox.com>2010-12-27 16:34:19 (GMT)
commit0ed748134748579a13cf27e1e8b3e55371bcd9dc (patch)
tree3f39dda690dc82e361b0e33df3bf59512d2bd3f3 /test-subprocess.c
parente7d1efbe9dc5c03e65a573d6f8c4d8804118eb0a (diff)
downloadgit-0ed748134748579a13cf27e1e8b3e55371bcd9dc.zip
git-0ed748134748579a13cf27e1e8b3e55371bcd9dc.tar.gz
git-0ed748134748579a13cf27e1e8b3e55371bcd9dc.tar.bz2
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.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/test-subprocess.c b/test-subprocess.c
new file mode 100644
index 0000000..667d3e5
--- /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);
+}