aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-07-14 14:19:10 -0700
committerJunio C Hamano <gitster@pobox.com>2009-07-14 15:17:01 -0700
commit05c1da2f5e7a5c0d2bbd1154bbb6c5cc9cb2b17f (patch)
tree87252bd99b85a9f158a662c58f0124c93b4293e4
parenta38837341c995773f2adc29ff5971196187b07fb (diff)
downloadgit-05c1da2f5e7a5c0d2bbd1154bbb6c5cc9cb2b17f.tar.gz
git-05c1da2f5e7a5c0d2bbd1154bbb6c5cc9cb2b17f.tar.xz
Fix extraneous lstat's in 'git checkout -f'
In our 'oneway_merge()' we always do an 'lstat()' to see if we might need to mark the entry for updating. But we really shouldn't need to do that when the cache entry is already marked as being ce_uptodate(), and this makes us do unnecessary lstat() calls if we have index preloading enabled. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--unpack-trees.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/unpack-trees.c b/unpack-trees.c
index f9d12aafb..48d862d3b 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -1004,7 +1004,7 @@ int oneway_merge(struct cache_entry **src, struct unpack_trees_options *o)
if (old && same(old, a)) {
int update = 0;
- if (o->reset) {
+ if (o->reset && !ce_uptodate(old)) {
struct stat st;
if (lstat(old->name, &st) ||
ie_match_stat(o->src_index, old, &st, CE_MATCH_IGNORE_VALID))