summaryrefslogtreecommitdiff
path: root/unpack-trees.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-07-14 21:19:10 (GMT)
committerJunio C Hamano <gitster@pobox.com>2009-07-14 22:17:01 (GMT)
commit05c1da2f5e7a5c0d2bbd1154bbb6c5cc9cb2b17f (patch)
tree87252bd99b85a9f158a662c58f0124c93b4293e4 /unpack-trees.c
parenta38837341c995773f2adc29ff5971196187b07fb (diff)
downloadgit-05c1da2f5e7a5c0d2bbd1154bbb6c5cc9cb2b17f.zip
git-05c1da2f5e7a5c0d2bbd1154bbb6c5cc9cb2b17f.tar.gz
git-05c1da2f5e7a5c0d2bbd1154bbb6c5cc9cb2b17f.tar.bz2
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>
Diffstat (limited to 'unpack-trees.c')
-rw-r--r--unpack-trees.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/unpack-trees.c b/unpack-trees.c
index f9d12aa..48d862d 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))