From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH v2 3/3] diff: turn skip_stat_unmatch on selectively
Date: Tue, 28 Jan 2014 05:59:28 +0700 [thread overview]
Message-ID: <1390863568-22656-1-git-send-email-pclouds@gmail.com> (raw)
In-Reply-To: <1390632411-3596-3-git-send-email-pclouds@gmail.com>
skip_stat_unmatch flag is added in fb13227 (git-diff: squelch "empty"
diffs - 2007-08-03) to ignore empty diffs caused by stat-only
dirtiness. In some diff case, stat is not involved at all. While
the code is written in a way that no expensive I/O is done, we still
need to move all file pairs from the old queue to the new queue in
diffcore_skip_stat_unmatch().
Only enable it when worktree is involved: "diff" and "diff <rev>".
This should help track down how skip_stat_unmatch is actually used
when bugs occur.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
This replaces 'diff: turn off skip_stat_unmatch on "diff --cached"'
The previous patch obviously leaves skip_stat_unmatch on in "diff
<rev> <rev>" and maybe other cases.
builtin/diff.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/builtin/diff.c b/builtin/diff.c
index 0f247d2..88542d9 100644
--- a/builtin/diff.c
+++ b/builtin/diff.c
@@ -150,6 +150,7 @@ static int builtin_diff_index(struct rev_info *revs,
perror("read_cache_preload");
return -1;
}
+ revs->diffopt.skip_stat_unmatch = !!diff_auto_refresh_index;
} else if (read_cache() < 0) {
perror("read_cache");
return -1;
@@ -252,6 +253,7 @@ static int builtin_diff_files(struct rev_info *revs, int argc, const char **argv
perror("read_cache_preload");
return -1;
}
+ revs->diffopt.skip_stat_unmatch = !!diff_auto_refresh_index;
return run_diff_files(revs, options);
}
@@ -343,7 +345,6 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
diff_no_index(&rev, argc, argv, prefix);
/* Otherwise, we are doing the usual "git" diff */
- rev.diffopt.skip_stat_unmatch = !!diff_auto_refresh_index;
/* Scale to real terminal size and respect statGraphWidth config */
rev.diffopt.stat_width = -1;
--
1.8.5.2.240.g8478abd
next prev parent reply other threads:[~2014-01-27 22:54 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-23 2:45 bug with git-diff --quiet IWAMOTO Toshihiro
2014-01-25 4:03 ` Duy Nguyen
2014-01-25 6:46 ` [PATCH 1/3] Move diffcore_skip_stat_unmatch core logic out for reuse later Nguyễn Thái Ngọc Duy
2014-01-25 6:46 ` [PATCH 2/3] diff: do not quit early on stat-dirty files Nguyễn Thái Ngọc Duy
2014-01-25 6:46 ` [PATCH 3/3] diff: turn off skip_stat_unmatch on "diff --cached" Nguyễn Thái Ngọc Duy
2014-01-27 22:59 ` Nguyễn Thái Ngọc Duy [this message]
2014-01-27 23:45 ` [PATCH v2 3/3] diff: turn skip_stat_unmatch on selectively Junio C Hamano
2014-01-28 22:51 ` Junio C Hamano
2014-01-28 23:52 ` Duy Nguyen
2014-01-29 19:25 ` Junio C Hamano
2014-01-30 5:36 ` Duy Nguyen
2014-01-31 16:17 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1390863568-22656-1-git-send-email-pclouds@gmail.com \
--to=pclouds@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.