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 17:13:37 UTC 2019
martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
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).
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D6390
AFFECTED FILES
mercurial/localrepo.py
mercurial/manifest.py
CHANGE DETAILS
diff --git a/mercurial/manifest.py b/mercurial/manifest.py
--- a/mercurial/manifest.py
+++ b/mercurial/manifest.py
@@ -1486,8 +1486,8 @@
_checkforbidden(added)
# 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
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -2615,8 +2615,8 @@
raise
# 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:
del m[f]
files = changed + removed
To: martinvonz, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list