Re: v1.7.0-rc0 shows lots of "unable to find <sha1>" on git-stash
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 30, 2010, 20:01 UTC
- Message-ID
- <7v8wbfnyz9.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <57518fd11001300836v7f21a8a9qc09953d9091a4513@mail.gmail.com>
Please try this.
The thing is that "add -u" internally runs "diff-files" equivalent, but the code to check the submodule freshness doesn't reset the GIT_INDEX_FILE exported from the caller and tries to use that even when checking the submodule repository.
diff --git a/submodule.c b/submodule.c index ca0527f..8bd0a30 100644 --- a/submodule.c +++ b/submodule.c @@ -126,7 +126,7 @@ int is_submodule_modified(const char *path) "--porcelain", NULL, }; - char *env[3]; + char *env[4]; struct strbuf buf = STRBUF_INIT; strbuf_addf(&buf, "%s/.git/", path); @@ -142,7 +142,9 @@ int is_submodule_modified(const char *path) env[0] = strbuf_detach(&buf, NULL); strbuf_addf(&buf, "GIT_DIR=%s/.git", path); 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)); cp.argv = argv; @@ -161,6 +163,7 @@ int is_submodule_modified(const char *path) free(env[0]); free(env[1]); + free(env[2]); strbuf_release(&buf); return len != 0; }