is_submodule_modified(): fix breakage with external GIT_INDEX_FILE
Even when the environment was given for the top-level process, checking in the submodule work tree should use the index file associated with the work tree of the submodule. Do not export it to the environment. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
@ -126,7 +126,7 @@ int is_submodule_modified(const char *path)
|
|||||||
"--porcelain",
|
"--porcelain",
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
char *env[3];
|
char *env[4];
|
||||||
struct strbuf buf = STRBUF_INIT;
|
struct strbuf buf = STRBUF_INIT;
|
||||||
|
|
||||||
strbuf_addf(&buf, "%s/.git/", path);
|
strbuf_addf(&buf, "%s/.git/", path);
|
||||||
@ -142,7 +142,9 @@ int is_submodule_modified(const char *path)
|
|||||||
env[0] = strbuf_detach(&buf, NULL);
|
env[0] = strbuf_detach(&buf, NULL);
|
||||||
strbuf_addf(&buf, "GIT_DIR=%s/.git", path);
|
strbuf_addf(&buf, "GIT_DIR=%s/.git", path);
|
||||||
env[1] = strbuf_detach(&buf, NULL);
|
env[1] = strbuf_detach(&buf, NULL);
|
||||||
env[2] = NULL;
|
strbuf_addf(&buf, "GIT_INDEX_FILE");
|
||||||
|
env[2] = strbuf_detach(&buf, NULL);
|
||||||
|
env[3] = NULL;
|
||||||
|
|
||||||
memset(&cp, 0, sizeof(cp));
|
memset(&cp, 0, sizeof(cp));
|
||||||
cp.argv = argv;
|
cp.argv = argv;
|
||||||
@ -161,6 +163,7 @@ int is_submodule_modified(const char *path)
|
|||||||
|
|
||||||
free(env[0]);
|
free(env[0]);
|
||||||
free(env[1]);
|
free(env[1]);
|
||||||
|
free(env[2]);
|
||||||
strbuf_release(&buf);
|
strbuf_release(&buf);
|
||||||
return len != 0;
|
return len != 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user