From: Junio C Hamano Date: Thu, 11 Mar 2010 20:04:13 GMT Subject: Re: [PATCH] git status: Fix false positive "new commits" output for dirty submodules Message-ID: <7v3a061v7m.fsf@alter.siamese.dyndns.org> In-Reply-To: <4B9909F6.5090104@web.de> Jens Lehmann writes: > Another way to fix this bug would have been to enter the correct sha1 > into two->sha1 for submodules with new commits. I didn't follow all the codepaths involved, but it might be worth a try. The beginning of the patch may look something like this, and then you would probably have to fix potential fallouts in diff.c from this change. diff-lib.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) diff --git a/diff-lib.c b/diff-lib.c index d7e13cb..a147d9c 100644 --- a/diff-lib.c +++ b/diff-lib.c @@ -182,10 +182,9 @@ int run_diff_files(struct rev_info *revs, unsigned int option) && !DIFF_OPT_TST(&revs->diffopt, IGNORE_SUBMODULES) && (!changed || (revs->diffopt.output_format & DIFF_FORMAT_PATCH)) && is_submodule_modified(ce->name)) { - changed = 1; dirty_submodule = 1; } - if (!changed) { + if (!changed && !dirty_submodule) { ce_mark_uptodate(ce); if (!DIFF_OPT_TST(&revs->diffopt, FIND_COPIES_HARDER)) continue;