##// END OF EJS Templates
Fix cold cache diff performance...
Chris Mason -
r2474:1e32e2fe default
parent child Browse files
Show More
@@ -618,7 +618,11 b' class localrepository(object):'
618 del mf[fn]
618 del mf[fn]
619 return mf
619 return mf
620
620
621 if node1:
621 compareworking = False
622 if not node1 or node1 == self.dirstate.parents()[0]:
623 compareworking = True
624
625 if not compareworking:
622 # read the manifest from node1 before the manifest from node2,
626 # read the manifest from node1 before the manifest from node2,
623 # so that we'll hit the manifest cache if we're going through
627 # so that we'll hit the manifest cache if we're going through
624 # all the revisions in parent->child order.
628 # all the revisions in parent->child order.
@@ -635,7 +639,7 b' class localrepository(object):'
635 self.dirstate.changes(files, match, show_ignored))
639 self.dirstate.changes(files, match, show_ignored))
636
640
637 # are we comparing working dir against its parent?
641 # are we comparing working dir against its parent?
638 if not node1:
642 if compareworking:
639 if lookup:
643 if lookup:
640 # do a full compare of any files that might have changed
644 # do a full compare of any files that might have changed
641 mf2 = mfmatches(self.dirstate.parents()[0])
645 mf2 = mfmatches(self.dirstate.parents()[0])
@@ -658,11 +662,15 b' class localrepository(object):'
658 deleted, unknown, ignored = [], [], []
662 deleted, unknown, ignored = [], [], []
659 mf2 = mfmatches(node2)
663 mf2 = mfmatches(node2)
660
664
661 if node1:
665 if not compareworking:
662 # flush lists from dirstate before comparing manifests
666 # flush lists from dirstate before comparing manifests
663 modified, added = [], []
667 modified, added = [], []
664
668
665 for fn in mf2:
669 # make sure to sort the files so we talk to the disk in a
670 # reasonable order
671 mf2keys = mf2.keys()
672 mf2keys.sort()
673 for fn in mf2keys:
666 if mf1.has_key(fn):
674 if mf1.has_key(fn):
667 if mf1[fn] != mf2[fn] and (mf2[fn] != "" or fcmp(fn, mf1)):
675 if mf1[fn] != mf2[fn] and (mf2[fn] != "" or fcmp(fn, mf1)):
668 modified.append(fn)
676 modified.append(fn)
General Comments 0
You need to be logged in to leave comments. Login now