D6390: commit: move sorting of added and removed files list to lower level
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Thu May 16 13:13:37 EDT 2019
martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
localrepo.commitctx() has lists of all changed files, as well as lists
of added and removed files. The list of all files is unsorted and
changelog.add() will sort it. Let's also sort the lists of added and
removed files at a lower level (manifestrevlog.add()) for
consistency. I don't think this will be a performance problem (someone
should have fixed the sorting in changelog.add() if it were).
diff --git a/mercurial/manifest.py b/mercurial/manifest.py
@@ -1486,8 +1486,8 @@
# combine the changed lists into one sorted iterator
- work = heapq.merge([(x, False) for x in added],
- [(x, True) for x in removed])
+ work = heapq.merge([(x, False) for x in sorted(added)],
+ [(x, True) for x in sorted(removed)])
arraytext, deltatext = m.fastdelta(self.fulltextcache[p1], work)
cachedelta = self._revlog.rev(p1), deltatext
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
@@ -2615,8 +2615,8 @@
# update manifest
- removed = [f for f in sorted(removed) if f in m1 or f in m2]
- drop = [f for f in removed if f in m]
+ removed = [f for f in removed if f in m1 or f in m2]
+ drop = sorted([f for f in removed if f in m])
for f in drop:
files = changed + removed
To: martinvonz, #hg-reviewers
More information about the Mercurial-devel