0ed7481347
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>
22 lines
417 B
C
22 lines
417 B
C
#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);
|
|
}
|