# HG changeset patch # User Pierre-Yves David # Date 1508766622 -7200 # Node ID cc3115ddcdba07e22f7de7058c4ff78d20879704 # Parent 180494f588e2995b1165a515aab658ba67d37c26# Parent c71e371c797b3539d0972eda687a9fbb679b17be test-compat: merge mercurial-3.9 into mercurial-3.8 diff -r 180494f588e2 -r cc3115ddcdba .hgtags --- a/.hgtags Fri Oct 20 22:56:52 2017 +0200 +++ b/.hgtags Mon Oct 23 15:50:22 2017 +0200 @@ -58,3 +58,4 @@ cc3e09e033a3c632c9ac35badbf8b5d53f584049 6.6.0 3a4f75c6619c7ef7d78ee0912efd6cb01d55b521 6.7.0 430ad68292d76b9387d1eeadf289951f51fd88d3 6.7.1 +ec0bbf26ce7fadd42c637e01d3750dac96ac0b1b 6.8.0 diff -r 180494f588e2 -r cc3115ddcdba CHANGELOG --- a/CHANGELOG Fri Oct 20 22:56:52 2017 +0200 +++ b/CHANGELOG Mon Oct 23 15:50:22 2017 +0200 @@ -1,8 +1,8 @@ Changelog ========= -6.8.0 -- in progress ----------------- +6.8.0 -- 2017-10-23 +------------------- * compatibility with Mercurial 4.4 (use upstream implementation for obsfate and effect-flags starting hg 4.4+) diff -r 180494f588e2 -r cc3115ddcdba debian/changelog --- a/debian/changelog Fri Oct 20 22:56:52 2017 +0200 +++ b/debian/changelog Mon Oct 23 15:50:22 2017 +0200 @@ -1,3 +1,9 @@ +mercurial-evolve (6.8.0-1) UNRELEASED; urgency=medium + + * new upstream release + + -- Pierre-Yves David Mon, 23 Oct 2017 15:41:03 +0200 + mercurial-evolve (6.7.1-1) unstable; urgency=medium * new upstream release diff -r 180494f588e2 -r cc3115ddcdba hgext3rd/evolve/__init__.py --- a/hgext3rd/evolve/__init__.py Fri Oct 20 22:56:52 2017 +0200 +++ b/hgext3rd/evolve/__init__.py Mon Oct 23 15:50:22 2017 +0200 @@ -1122,10 +1122,10 @@ if othertroubles: hint = hintmap['+'.join(othertroubles)] else: - l = len(troubled[targetcat]) - if l: + length = len(troubled[targetcat]) + if length: hint = _("%d other %s in the repository, do you want --any " - "or --rev") % (l, targetcat) + "or --rev") % (length, targetcat) else: othertroubles = [] for cat in unselectedcategories: diff -r 180494f588e2 -r cc3115ddcdba hgext3rd/evolve/legacy.py --- a/hgext3rd/evolve/legacy.py Fri Oct 20 22:56:52 2017 +0200 +++ b/hgext3rd/evolve/legacy.py Mon Oct 23 15:50:22 2017 +0200 @@ -86,7 +86,7 @@ """import markers from an .hg/obsolete-relations file""" cnt = 0 err = 0 - l = repo.lock() + lock = repo.lock() some = False try: unlink = [] @@ -163,7 +163,7 @@ tr.release() finally: del repo._importoldobsolete - l.release() + lock.release() if not some: ui.warn(_('nothing to do\n')) ui.status('%i obsolete marker converted\n' % cnt) diff -r 180494f588e2 -r cc3115ddcdba hgext3rd/evolve/metadata.py --- a/hgext3rd/evolve/metadata.py Fri Oct 20 22:56:52 2017 +0200 +++ b/hgext3rd/evolve/metadata.py Mon Oct 23 15:50:22 2017 +0200 @@ -5,7 +5,7 @@ # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. -__version__ = '6.8.0.dev' -testedwith = '3.8.4 3.9.2 4.0.2 4.1.3 4.2.3 4.3.2' +__version__ = '6.8.0' +testedwith = '3.8.4 3.9.2 4.0.2 4.1.3 4.2.3 4.3.2 4.4' minimumhgversion = '3.8' buglink = 'https://bz.mercurial-scm.org/' diff -r 180494f588e2 -r cc3115ddcdba hgext3rd/topic/__init__.py --- a/hgext3rd/topic/__init__.py Fri Oct 20 22:56:52 2017 +0200 +++ b/hgext3rd/topic/__init__.py Mon Oct 23 15:50:22 2017 +0200 @@ -139,9 +139,9 @@ 'topic.active': 'green', } -__version__ = '0.4.0.dev' +__version__ = '0.4.0' -testedwith = '4.0.2 4.1.3 4.2.3 4.3.3' +testedwith = '4.0.2 4.1.3 4.2.3 4.3.3 4.4' minimumhgversion = '4.0' buglink = 'https://bz.mercurial-scm.org/' @@ -517,16 +517,16 @@ raise error.Abort('changing topic requires a topic name or --clear') if repo.revs('%ld and public()', touchedrevs): raise error.Abort("can't change topic of a public change") - wl = l = txn = None + wl = lock = txn = None try: wl = repo.wlock() - l = repo.lock() + lock = repo.lock() txn = repo.transaction('rewrite-topics') rewrote = _changetopics(ui, repo, touchedrevs, topic) txn.close() ui.status('changed topic on %d changes\n' % rewrote) finally: - lockmod.release(txn, l, wl) + lockmod.release(txn, lock, wl) repo.invalidate() return diff -r 180494f588e2 -r cc3115ddcdba hgext3rd/topic/stack.py --- a/hgext3rd/topic/stack.py Fri Oct 20 22:56:52 2017 +0200 +++ b/hgext3rd/topic/stack.py Mon Oct 23 15:50:22 2017 +0200 @@ -9,6 +9,7 @@ error, node, phases, + obsolete, util, ) from .evolvebits import builddependencies, _singlesuccessor @@ -23,6 +24,25 @@ if not util.safehasattr(context.basectx, 'isunstable'): context.basectx.isunstable = context.basectx.troubled +def _stackcandidates(repo): + """build the smaller set of revs that might be part of a stack. + + The intend is to build something more efficient than what revsets do in + this area. + """ + phasecache = repo._phasecache + if not phasecache._phasesets: + return repo.revs('(not public()) - obsolete()') + if any(s is None for s in phasecache._phasesets): + return repo.revs('(not public()) - obsolete()') + + result = set() + for s in phasecache._phasesets[phases.draft:]: + result |= s + + result -= obsolete.getrevs(repo, 'obsolete') + return result + class stack(object): """object represent a stack and common logic associated to it.""" @@ -31,12 +51,15 @@ self.branch = branch self.topic = topic self.behinderror = None + + subset = _stackcandidates(repo) + if topic is not None and branch is not None: raise error.ProgrammingError('both branch and topic specified (not defined yet)') elif topic is not None: - trevs = repo.revs("not obsolete() and topic(%s)", topic) + trevs = repo.revs("%ld and topic(%s)", subset, topic) elif branch is not None: - trevs = repo.revs("not public() and branch(%s) - obsolete() - topic()", branch) + trevs = repo.revs("%ld and branch(%s) - topic()", subset, branch) else: raise error.ProgrammingError('neither branch and topic specified (not defined yet)') self._revs = trevs