Merge branch 'bd/maint-unpack-trees-parawalk-fix'
authorJunio C Hamano <gitster@pobox.com>
Tue, 22 Jun 2010 16:45:22 +0000 (09:45 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 22 Jun 2010 16:45:22 +0000 (09:45 -0700)
* bd/maint-unpack-trees-parawalk-fix:
  unpack-trees: Make index lookahead less pessimal

unpack-trees.c

index 85045fd..8cf0da3 100644 (file)
@@ -522,9 +522,17 @@ static int find_cache_pos(struct traverse_info *info,
                const char *ce_name, *ce_slash;
                int cmp, ce_len;
 
-               if (!ce_in_traverse_path(ce, info))
+               if (ce->ce_flags & CE_UNPACKED) {
+                       /*
+                        * cache_bottom entry is already unpacked, so
+                        * we can never match it; don't check it
+                        * again.
+                        */
+                       if (pos == o->cache_bottom)
+                               ++o->cache_bottom;
                        continue;
-               if (ce->ce_flags & CE_UNPACKED)
+               }
+               if (!ce_in_traverse_path(ce, info))
                        continue;
                ce_name = ce->name + pfxlen;
                ce_slash = strchr(ce_name, '/');