Mercurial > evolve
changeset 3195:8f74cf219be3
packaging: merge 7.0.1 into default
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 15 Nov 2017 00:30:15 +0100 |
parents | 5db76f35efce (current diff) f5d5f08c8f08 (diff) |
children | 94e5235e95f5 |
files | hgext3rd/evolve/metadata.py hgext3rd/topic/__init__.py |
diffstat | 10 files changed, 241 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgtags Tue Nov 14 18:35:25 2017 +0100 +++ b/.hgtags Wed Nov 15 00:30:15 2017 +0100 @@ -60,3 +60,4 @@ 430ad68292d76b9387d1eeadf289951f51fd88d3 6.7.1 ec0bbf26ce7fadd42c637e01d3750dac96ac0b1b 6.8.0 c56c028f3802202241551e5953bea74ab3a6c434 7.0.0 +c4940c22d76b9c6b3c2117a3b490f3c4fd796972 7.0.1
--- a/CHANGELOG Tue Nov 14 18:35:25 2017 +0100 +++ b/CHANGELOG Wed Nov 15 00:30:15 2017 +0100 @@ -11,6 +11,10 @@ to server with the extension bu obsolescence marker exchange disabled. +topic (0.5.1) + + * fix new-heads check when pushing new topic with --publish. + 7.0.0 -- 2017-10-23 -------------------
--- a/debian/changelog Tue Nov 14 18:35:25 2017 +0100 +++ b/debian/changelog Wed Nov 15 00:30:15 2017 +0100 @@ -1,3 +1,9 @@ +mercurial-evolve (7.0.1) unstable; urgency=medium + + * new upstream release + + -- Pierre-Yves David <pierre-yves.david@ens-lyon.org> Wed, 15 Nov 2017 00:14:42 +0100 + mercurial-evolve (7.0.0-1) unstable; urgency=medium * new upstream release
--- a/hgext3rd/evolve/__init__.py Tue Nov 14 18:35:25 2017 +0100 +++ b/hgext3rd/evolve/__init__.py Wed Nov 15 00:30:15 2017 +0100 @@ -416,10 +416,10 @@ def _configureoptions(ui, repo): # If no capabilities are specified, enable everything. # This is so existing evolve users don't need to change their config. - evolveopts = ui.configlist('experimental', 'evolution') + evolveopts = repo.ui.configlist('experimental', 'evolution') if not evolveopts: evolveopts = ['all'] - ui.setconfig('experimental', 'evolution', evolveopts, 'evolve') + repo.ui.setconfig('experimental', 'evolution', evolveopts, 'evolve') if obsolete.isenabled(repo, 'exchange'): repo.ui.setconfig('server', 'bundle1', False)
--- a/hgext3rd/evolve/metadata.py Tue Nov 14 18:35:25 2017 +0100 +++ b/hgext3rd/evolve/metadata.py Wed Nov 15 00:30:15 2017 +0100 @@ -6,6 +6,6 @@ # GNU General Public License version 2 or any later version. __version__ = '7.1.0.dev' -testedwith = '4.1.3 4.2.3 4.3.2 4.4' +testedwith = '4.1.3 4.2.3 4.3.2 4.4.1' minimumhgversion = '4.1' buglink = 'https://bz.mercurial-scm.org/'
--- a/hgext3rd/evolve/serveronly.py Tue Nov 14 18:35:25 2017 +0100 +++ b/hgext3rd/evolve/serveronly.py Wed Nov 15 00:30:15 2017 +0100 @@ -53,9 +53,9 @@ @eh.reposetup def default2evolution(ui, repo): - evolveopts = ui.configlist('experimental', 'evolution') + evolveopts = repo.ui.configlist('experimental', 'evolution') if not evolveopts: evolveopts = 'all' - ui.setconfig('experimental', 'evolution', evolveopts) + repo.ui.setconfig('experimental', 'evolution', evolveopts) if obsolete.isenabled(repo, 'exchange'): repo.ui.setconfig('server', 'bundle1', False)
--- a/hgext3rd/topic/__init__.py Tue Nov 14 18:35:25 2017 +0100 +++ b/hgext3rd/topic/__init__.py Wed Nov 15 00:30:15 2017 +0100 @@ -176,7 +176,7 @@ __version__ = '0.6.0.dev' -testedwith = '4.1.3 4.2.3 4.3.3 4.4' +testedwith = '4.1.3 4.2.3 4.3.3 4.4.1' minimumhgversion = '4.1' buglink = 'https://bz.mercurial-scm.org/'
--- a/hgext3rd/topic/discovery.py Tue Nov 14 18:35:25 2017 +0100 +++ b/hgext3rd/topic/discovery.py Wed Nov 15 00:30:15 2017 +0100 @@ -1,5 +1,6 @@ from __future__ import absolute_import +import collections import weakref from mercurial.i18n import _ @@ -15,6 +16,7 @@ def _headssummary(orig, *args): # In mercurial < 4.2, we receive repo, remote and outgoing as arguments + pushop = None if len(args) == 3: pushoparg = False repo, remote, outgoing = args @@ -31,17 +33,51 @@ publishing = ('phases' not in remote.listkeys('namespaces') or bool(remote.listkeys('phases').get('publishing', False))) - if publishing or not remote.capable('topics'): + if ((publishing or not remote.capable('topics')) + and not getattr(pushop, 'publish', False)): return orig(*args) + publishedset = () + remotebranchmap = None + origremotebranchmap = remote.branchmap + # < hg-4.4 do not have a --publish flag anyway + if pushoparg and util.safehasattr(pushop, 'remotephases'): + publishednode = [c.node() for c in pushop.outdatedphases] + publishedset = repo.revs('ancestors(%ln + %ln)', + publishednode, + pushop.remotephases.publicheads) + + rev = repo.unfiltered().changelog.nodemap.get + + def remotebranchmap(): + # drop topic information from changeset about to be published + result = collections.defaultdict(list) + for branch, heads in origremotebranchmap().iteritems(): + if ':' not in branch: + result[branch].extend(heads) + else: + namedbranch = branch.split(':', 1)[0] + for h in heads: + r = rev(h) + if r is not None and r in publishedset: + result[namedbranch].append(h) + else: + result[branch].append(h) + for heads in result.itervalues(): + heads.sort() + return result + class repocls(repo.__class__): # awful hack to see branch as "branch:topic" def __getitem__(self, key): ctx = super(repocls, self).__getitem__(key) oldbranch = ctx.branch + rev = ctx.rev() def branch(): branch = oldbranch() + if rev in publishedset: + return branch topic = ctx.topic() if topic: branch = "%s:%s" % (branch, topic) @@ -56,6 +92,8 @@ def branchinfo(rev): branch, close = changelog.branchinfo(rev) + if rev in publishedset: + return branch, close topic = repo[rev].topic() if topic: branch = "%s:%s" % (branch, topic) @@ -67,6 +105,8 @@ oldrepocls = repo.__class__ try: repo.__class__ = repocls + if remotebranchmap is not None: + remote.branchmap = remotebranchmap unxx = repo.filtered('unfiltered-topic') repo.unfiltered = lambda: unxx if pushoparg: @@ -83,6 +123,8 @@ if 'unfiltered' in vars(repo): del repo.unfiltered repo.__class__ = oldrepocls + if remotebranchmap is not None: + remote.branchmap = origremotebranchmap def wireprotobranchmap(orig, repo, proto): oldrepo = repo.__class__
--- a/tests/test-topic-flow-publish-flag.t Tue Nov 14 18:35:25 2017 +0100 +++ b/tests/test-topic-flow-publish-flag.t Wed Nov 15 00:30:15 2017 +0100 @@ -280,3 +280,147 @@ | o 0:ea207398892e ROOT public default + +Testing --publish interaction with multiple head detection +============================================================ + +pushing a topic changeset, publishing it +---------------------------------------- + + $ hg topic topic_A + marked working directory as topic: topic_A + $ mkcommit c_dK0 + active topic 'topic_A' grew its first changeset + $ hg push -r 'desc("c_dK0")' --publish + pushing to $TESTTMP/bare-branch-server + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + active topic 'topic_A' is now empty + $ hg log --rev 'sort(all(), "topo")' -GT '{rev}:{node|short} {desc} {phase} {branch} {topics}' + @ 11:d06fc4f891e8 c_dK0 public default + | + o 10:ac4cf59f2aac c_dJ0 public default + | + o 9:fbf2be276221 c_dI0 public default + | + o 5:5576ae39eaee c_dE0 public default + | + | o 8:8e85646c135f c_oH0 draft other + | | + | o 7:d293f74a1233 c_oG0 public other + | | + | o 6:45b23c834b6a c_oF0 public other + |/ + o 4:c63e7dd93a91 c_dD0 public default + | + o 3:7d56a56d2547 c_dC0 public default + | + o 2:286d02a6e2a2 c_dB0 public default + | + o 1:134bc3852ad2 c_dA0 public default + | + o 0:ea207398892e ROOT public default + + +pushing a new branch, alongside an existing topic +------------------------------------------------- + + $ hg topic topic_A + $ mkcommit c_dL0 + active topic 'topic_A' grew its first changeset + $ hg push -r 'desc("c_dL0")' + pushing to $TESTTMP/bare-branch-server + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + $ hg update 'desc("c_dK")' + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit c_dM0 + $ hg push -r 'desc("c_dM0")' --publish + pushing to $TESTTMP/bare-branch-server + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + $ hg log --rev 'sort(all(), "topo")' -GT '{rev}:{node|short} {desc} {phase} {branch} {topics}' + @ 13:0d144c8b6c8f c_dM0 public default + | + | o 12:3c73f6cabf07 c_dL0 draft default topic_A + |/ + o 11:d06fc4f891e8 c_dK0 public default + | + o 10:ac4cf59f2aac c_dJ0 public default + | + o 9:fbf2be276221 c_dI0 public default + | + o 5:5576ae39eaee c_dE0 public default + | + | o 8:8e85646c135f c_oH0 draft other + | | + | o 7:d293f74a1233 c_oG0 public other + | | + | o 6:45b23c834b6a c_oF0 public other + |/ + o 4:c63e7dd93a91 c_dD0 public default + | + o 3:7d56a56d2547 c_dC0 public default + | + o 2:286d02a6e2a2 c_dB0 public default + | + o 1:134bc3852ad2 c_dA0 public default + | + o 0:ea207398892e ROOT public default + + +pushing a topic (publishing) alongside and existing branch head +--------------------------------------------------------------- + + $ hg update 'desc("c_dK")' + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg topic topic_B + marked working directory as topic: topic_B + $ mkcommit c_dN0 + active topic 'topic_B' grew its first changeset + $ hg push -r 'desc("c_dN0")' --publish + pushing to $TESTTMP/bare-branch-server + searching for changes + abort: push creates new remote head 4dcd0be9db96! + (merge or see 'hg help push' for details about pushing new heads) + [255] + $ hg log --rev 'sort(all(), "topo")' -GT '{rev}:{node|short} {desc} {phase} {branch} {topics}' + @ 14:4dcd0be9db96 c_dN0 draft default topic_B + | + | o 13:0d144c8b6c8f c_dM0 public default + |/ + | o 12:3c73f6cabf07 c_dL0 draft default topic_A + |/ + o 11:d06fc4f891e8 c_dK0 public default + | + o 10:ac4cf59f2aac c_dJ0 public default + | + o 9:fbf2be276221 c_dI0 public default + | + o 5:5576ae39eaee c_dE0 public default + | + | o 8:8e85646c135f c_oH0 draft other + | | + | o 7:d293f74a1233 c_oG0 public other + | | + | o 6:45b23c834b6a c_oF0 public other + |/ + o 4:c63e7dd93a91 c_dD0 public default + | + o 3:7d56a56d2547 c_dC0 public default + | + o 2:286d02a6e2a2 c_dB0 public default + | + o 1:134bc3852ad2 c_dA0 public default + | + o 0:ea207398892e ROOT public default +
--- a/tests/test-wireproto.t Tue Nov 14 18:35:25 2017 +0100 +++ b/tests/test-wireproto.t Wed Nov 15 00:30:15 2017 +0100 @@ -208,8 +208,45 @@ abort: unexpected response: empty string [255] +(do some extra pulling to be sure) + + $ hg -R client pull http://localhost:$HGPORT/ + pulling from http://localhost:$HGPORT/ + searching for changes + no changes found + obsmarker-exchange: 258 bytes received + + $ hg -R client pull http://localhost:$HGPORT/ --config experimental.evolution=createmarkers + pulling from http://localhost:$HGPORT/ + searching for changes + no changes found + + $ hg -R client pull http://localhost:$HGPORT/ --config experimental.evolution=createmarkers --config extensions.evolve='!' + pulling from http://localhost:$HGPORT/ + searching for changes + no changes found + But we do let it goes fine on repository with exchange disabled: $ $RUNTESTDIR/killdaemons.py $DAEMON_PIDS $ hg serve -R server -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log --config experimental.evolution='!' $ hg debugpushkey http://localhost:$HGPORT/ obsolete + +(do some extra pulling to be sure) + + $ hg -R client pull http://localhost:$HGPORT/ + pulling from http://localhost:$HGPORT/ + searching for changes + no changes found + + $ hg -R client pull http://localhost:$HGPORT/ --config experimental.evolution=createmarkers + pulling from http://localhost:$HGPORT/ + searching for changes + no changes found + + $ hg -R client pull http://localhost:$HGPORT/ --config experimental.evolution=createmarkers --config extensions.evolve='!' + pulling from http://localhost:$HGPORT/ + searching for changes + no changes found + + $ $RUNTESTDIR/killdaemons.py $DAEMON_PIDS