Mercurial > hg > evolve
changeset 1884:0303bb24f673 stable
merge with default to prepare the next version
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Wed, 01 Feb 2017 15:04:54 +0100 |
parents | b674277ea4ef (current diff) e553fc96447d (diff) |
children | 0b67eff25139 |
files | |
diffstat | 13 files changed, 138 insertions(+), 67 deletions(-) [+] |
line wrap: on
line diff
--- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,21 +1,29 @@ -recursive-include docs/figures *.svg +exclude contrib/nopushpublish.py +exclude hgext/directaccess.py +exclude hgext/drophack.py +exclude hgext/inhibit.py +exclude hgext/obsolete.py +exclude Makefile +exclude tests/test-drop.t +exclude tests/test-inhibit.t +exclude tests/test-oldconvert.t +include COPYING include docs/figures/hgview-example.png +include docs/makefile +include docs/*.py +include docs/README include docs/*.rst -include docs/*.py +include docs/static/*.svg include docs/tutorials/*.t -include docs/makefile -include docs/static/*.svg +include hgext/evolve.py include hgext/__init__.py -include hgext/evolve.py include hgext/pushexperiment.py include hgext/simple4server.py -include setup.py +include MANIFEST.in include README -include COPYING -include tests/*.t +include setup.py include tests/*.py -include tests/_exc-util.sh -include tests/dummyssh -exclude tests/test-oldconvert.t -exclude tests/test-qsync.t -exclude tests/test-drop.t +include tests/*.sh +include tests/*.t +prune debian +recursive-include docs/figures *.svg
--- a/Makefile +++ b/Makefile @@ -3,9 +3,7 @@ help: @echo 'Commonly used make targets:' - @echo ' tests - run all tests in the automatic test suite' - @echo ' all-version-tests - run all tests against many hg versions' - @echo ' tests-%s - run all tests in the specified hg version' + @echo ' deb-prepare - prepare the build of a debian package' all: help
--- a/README +++ b/README @@ -56,6 +56,12 @@ Changelog ========= +5.6.0 -- + + - compatibility with Mercurial 4.1. + - improvement of prune error message. + - fold: require --from flag for folding revisions to working copy + 5.5.1 -- - fix crash when trying to fold an empty revision set (issue5453)
--- a/hgext/evolve.py +++ b/hgext/evolve.py @@ -2514,7 +2514,8 @@ raise error.Abort('nothing to prune') if _disallowednewunstable(repo, revs): - raise error.Abort(_("cannot prune in the middle of a stack")) + raise error.Abort(_("cannot prune in the middle of a stack"), + hint = _("new unstable changesets are not allowed")) # defines successors changesets sucs = scmutil.revrange(repo, succs) @@ -3067,16 +3068,17 @@ @command('^fold|squash', [('r', 'rev', [], _("revision to fold")), - ('', 'exact', None, _("only fold specified revisions")) + ('', 'exact', None, _("only fold specified revisions")), + ('', 'from', None, _("fold revisions linearly to working copy parent")) ] + commitopts + commitopts2, _('hg fold [OPTION]... [-r] REV')) def fold(ui, repo, *revs, **opts): """fold multiple revisions into a single one - By default, folds all the revisions linearly between the given revisions + With --from, folds all the revisions linearly between the given revisions and the parent of the working directory. - Use --exact for folding only the specified revisions while ignoring the + With --exact, folds only the specified revisions while ignoring the parent of the working directory. In this case, the given revisions must form a linear unbroken chain. @@ -3086,18 +3088,18 @@ - Fold the current revision with its parent:: - hg fold .^ + hg fold --from .^ - Fold all draft revisions with working directory parent:: - hg fold 'draft()' + hg fold --from 'draft()' See :hg:`help phases` for more about draft revisions and :hg:`help revsets` for more about the `draft()` keyword - Fold revisions between 3 and 6 with the working directory parent:: - hg fold 3::6 + hg fold --from 3::6 - Fold revisions 3 and 4: @@ -3114,7 +3116,9 @@ revs = scmutil.revrange(repo, revs) - if not opts['exact']: + if opts['from'] and opts['exact']: + raise error.Abort(_('cannot use both --from and --exact')) + elif opts['from']: # Try to extend given revision starting from the working directory extrevs = repo.revs('(%ld::.) or (.::%ld)', revs, revs) discardedrevs = [r for r in revs if r not in extrevs] @@ -3123,6 +3127,11 @@ hint=_("given revisions are unrelated to parent " "of working directory")) revs = extrevs + elif opts['exact']: + # Nothing to do; "revs" is already set correctly + pass + else: + raise error.Abort(_('must specify either --from or --exact')) if not revs: raise error.Abort(_('specified revisions evaluate to an empty set'), @@ -3138,7 +3147,7 @@ root, head = _foldcheck(repo, revs) - tr = repo.transaction('touch') + tr = repo.transaction('fold') try: commitopts = opts.copy() allctx = [repo[r] for r in revs] @@ -3237,8 +3246,9 @@ newunstable = _disallowednewunstable(repo, revs) if newunstable: raise error.Abort( - _('cannot edit commit information in the middle of a stack'), - hint=_('%s will be affected') % repo[newunstable.first()]) + _('cannot edit commit information in the middle of a '\ + 'stack'), hint=_('%s will become unstable and new unstable'\ + ' changes are not allowed') % repo[newunstable.first()]) root = head = repo[revs.first()] wctx = repo[None] @@ -3302,7 +3312,8 @@ head = repo[heads.first()] if _disallowednewunstable(repo, revs): raise error.Abort(_("cannot fold chain not ending with a head "\ - "or with branching")) + "or with branching"), hint = _("new unstable"\ + " changesets are not allowed")) return root, head def _disallowednewunstable(repo, revs): @@ -3840,6 +3851,17 @@ def local_pullobsmarkers(self, heads=None, common=None): return _getobsmarkersstream(self._repo, heads=heads, common=common) +# The wireproto.streamres API changed, handling chunking and compression +# directly. Handle either case. +if util.safehasattr(wireproto.abstractserverproto, 'groupchunks'): + # We need to handle chunking and compression directly + def streamres(d, proto): + wireproto.streamres(proto.groupchunks(d)) +else: + # Leave chunking and compression to streamres + def streamres(d, proto): + wireproto.streamres(reader=d, v1compressible=True) + def srv_pullobsmarkers(repo, proto, others): opts = wireproto.options('', ['heads', 'common'], others) for k, v in opts.iteritems(): @@ -3851,7 +3873,7 @@ finaldata.write('%20i' % len(obsdata)) finaldata.write(obsdata) finaldata.seek(0) - return wireproto.streamres(proto.groupchunks(finaldata)) + return streamres(finaldata, proto) def _obsrelsethashtreefm0(repo): return _obsrelsethashtree(repo, obsolete._fm0encodeonemarker)
--- a/hgext/simple4server.py +++ b/hgext/simple4server.py @@ -158,6 +158,17 @@ seennodes |= pendingnodes return seenmarkers +# The wireproto.streamres API changed, handling chunking and compression +# directly. Handle either case. +if util.safehasattr(wireproto.abstractserverproto, 'groupchunks'): + # We need to handle chunking and compression directly + def streamres(d, proto): + return wireproto.streamres(proto.groupchunks(d)) +else: + # Leave chunking and compression to streamres + def streamres(d, proto): + return wireproto.streamres(reader=d, v1compressible=True) + # from evolve extension: cf35f38d6a10 def srv_pullobsmarkers(repo, proto, others): """serves a binary stream of markers. @@ -175,7 +186,7 @@ finaldata.write('%20i' % len(obsdata)) finaldata.write(obsdata) finaldata.seek(0) - return wireproto.streamres(proto.groupchunks(finaldata)) + return streamres(finaldata, proto) # from evolve extension: 3249814dabd1
--- a/tests/test-evolve.t +++ b/tests/test-evolve.t @@ -679,7 +679,16 @@ $ hg fold abort: no revisions specified [255] + $ hg fold --from + abort: no revisions specified + [255] $ hg fold . + abort: must specify either --from or --exact + [255] + $ hg fold --from . --exact + abort: cannot use both --from and --exact + [255] + $ hg fold --from . single revision specified, nothing to fold [1] $ hg fold 0::10 --rev 1 --exact @@ -688,22 +697,22 @@ $ hg fold -r 4 -r 6 --exact abort: cannot fold non-linear revisions (multiple roots given) [255] + $ hg fold --from 10 1 + abort: cannot fold non-linear revisions + (given revisions are unrelated to parent of working directory) + [255] $ hg fold --exact -r "4 and not 4" abort: specified revisions evaluate to an empty set (use different revision arguments) [255] - $ hg fold 10 1 - abort: cannot fold non-linear revisions - (given revisions are unrelated to parent of working directory) - [255] $ hg phase --public 0 - $ hg fold -r 0 + $ hg fold --from -r 0 abort: cannot fold public revisions [255] - $ hg fold -r 5 + $ hg fold --from -r 5 3 changesets folded 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg fold 6 # want to run hg fold 6 + $ hg fold --from 6 # want to run hg fold 6 abort: hidden revision '6'! (use --hidden to access hidden revisions) [255] @@ -810,7 +819,7 @@ Test fold with commit messages $ cd ../work - $ hg fold .^ --message "Folding with custom commit message" + $ hg fold --from .^ --message "Folding with custom commit message" 2 changesets folded 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ glog @@ -829,7 +838,7 @@ > commit message > EOF - $ hg fold .^ --logfile commit-message + $ hg fold --from .^ --logfile commit-message 2 changesets folded 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg qlog @@ -1305,9 +1314,11 @@ created new head $ hg prune '26 + 27' abort: cannot prune in the middle of a stack + (new unstable changesets are not allowed) [255] $ hg prune '19::28' abort: cannot prune in the middle of a stack + (new unstable changesets are not allowed) [255] $ hg prune '26::' 3 changesets pruned @@ -1342,9 +1353,11 @@ $ hg fold --exact "19 + 18" abort: cannot fold chain not ending with a head or with branching + (new unstable changesets are not allowed) [255] $ hg fold --exact "18::29" abort: cannot fold chain not ending with a head or with branching + (new unstable changesets are not allowed) [255] $ hg fold --exact "19::" 2 changesets folded @@ -1487,10 +1500,11 @@ check that metaedit respects allowunstable $ hg metaedit '.^' --config 'experimental.evolution=createmarkers, allnewcommands' abort: cannot edit commit information in the middle of a stack - (c904da5245b0 will be affected) + (c904da5245b0 will become unstable and new unstable changes are not allowed) [255] $ hg metaedit '18::20' --fold --config 'experimental.evolution=createmarkers, allnewcommands' abort: cannot fold chain not ending with a head or with branching + (new unstable changesets are not allowed) [255] $ hg metaedit --user foobar 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
--- a/tests/test-obsolete.t +++ b/tests/test-obsolete.t @@ -580,6 +580,7 @@ parent: 10:2033b4e49474 user: test date: Thu Jan 01 00:00:00 1970 +0000 + trouble: bumped summary: add obsol_d''' $ hg push ../other-new/ @@ -609,6 +610,7 @@ |/ parent: 10:2033b4e49474 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 + | trouble: bumped | summary: add obsol_d''' | | o changeset: 11:9468a5f5d8b2 @@ -672,6 +674,7 @@ parent: 10:2033b4e49474 user: test date: Thu Jan 01 00:00:00 1970 +0000 + trouble: bumped, divergent summary: add obsol_d''' changeset: 16:50f11e5e3a63 @@ -679,6 +682,7 @@ parent: 11:9468a5f5d8b2 user: test date: Thu Jan 01 00:00:00 1970 +0000 + trouble: divergent summary: add obsolet_conflicting_d @@ -716,12 +720,14 @@ | parent: 2:4538525df7e2 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 + | trouble: unstable | summary: add obsol_d'' | | o changeset: 16:50f11e5e3a63 | | parent: 11:9468a5f5d8b2 | | user: test | | date: Thu Jan 01 00:00:00 1970 +0000 + | | trouble: divergent | | summary: add obsolet_conflicting_d | | | | o changeset: 15:705ab2a6b72e @@ -745,6 +751,7 @@ | | |/ parent: 10:2033b4e49474 | | | user: test | | | date: Thu Jan 01 00:00:00 1970 +0000 + | | | trouble: bumped, divergent | | | summary: add obsol_d''' | | | | o | changeset: 11:9468a5f5d8b2
--- a/tests/test-simple4server-bundle2.t +++ b/tests/test-simple4server-bundle2.t @@ -71,12 +71,12 @@ Capacity testing =================== - $ wget -q -O - http://localhost:$HGPORT/?cmd=hello + $ curl -s http://localhost:$HGPORT/?cmd=hello capabilities: * _evoext_pushobsmarkers_0 _evoext_pullobsmarkers_0 _evoext_obshash_0 _evoext_obshash_1 _evoext_getbundle_obscommon (glob) - $ wget -q -O - http://localhost:$HGPORT/?cmd=capabilities + $ curl -s http://localhost:$HGPORT/?cmd=capabilities * _evoext_pushobsmarkers_0 _evoext_pullobsmarkers_0 _evoext_obshash_0 _evoext_obshash_1 _evoext_getbundle_obscommon (no-eol) (glob) - $ wget -q -O - "http://localhost:$HGPORT/?cmd=listkeys&namespace=namespaces" | sort + $ curl -s "http://localhost:$HGPORT/?cmd=listkeys&namespace=namespaces" | sort bookmarks namespaces obsolete @@ -128,14 +128,14 @@ =========================================== (used by bitbucket to select which repo use evolve) - $ wget -q -O - "http://localhost:$HGPORT/?cmd=listkeys&namespace=namespaces" | sort + $ curl -s "http://localhost:$HGPORT/?cmd=listkeys&namespace=namespaces" | sort bookmarks namespaces obsolete phases - $ wget -q -O - http://localhost:$HGPORT/?cmd=hello + $ curl -s http://localhost:$HGPORT/?cmd=hello capabilities: * _evoext_pushobsmarkers_0 _evoext_pullobsmarkers_0 _evoext_obshash_0 _evoext_obshash_1 _evoext_getbundle_obscommon (glob) - $ wget -q -O - http://localhost:$HGPORT/?cmd=capabilities + $ curl -s http://localhost:$HGPORT/?cmd=capabilities * _evoext_pushobsmarkers_0 _evoext_pullobsmarkers_0 _evoext_obshash_0 _evoext_obshash_1 _evoext_getbundle_obscommon (no-eol) (glob) $ echo '[__temporary__]' >> server/.hg/hgrc @@ -144,7 +144,7 @@ $ hg serve -R server -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log $ cat hg.pid >> $DAEMON_PIDS - $ wget -q -O - "http://localhost:$HGPORT/?cmd=listkeys&namespace=namespaces" | sort + $ curl -s "http://localhost:$HGPORT/?cmd=listkeys&namespace=namespaces" | sort bookmarks namespaces phases @@ -154,13 +154,13 @@ $ hg serve -R server -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log $ cat hg.pid >> $DAEMON_PIDS - $ wget -q -O - "http://localhost:$HGPORT/?cmd=listkeys&namespace=namespaces" | sort + $ curl -s "http://localhost:$HGPORT/?cmd=listkeys&namespace=namespaces" | sort bookmarks namespaces obsolete phases - $ wget -q -O - http://localhost:$HGPORT/?cmd=hello + $ curl -s http://localhost:$HGPORT/?cmd=hello capabilities: * _evoext_pushobsmarkers_0 _evoext_pullobsmarkers_0 _evoext_obshash_0 _evoext_obshash_1 _evoext_getbundle_obscommon (glob) - $ wget -q -O - http://localhost:$HGPORT/?cmd=capabilities + $ curl -s http://localhost:$HGPORT/?cmd=capabilities * _evoext_pushobsmarkers_0 _evoext_pullobsmarkers_0 _evoext_obshash_0 _evoext_obshash_1 _evoext_getbundle_obscommon (no-eol) (glob)
--- a/tests/test-simple4server.t +++ b/tests/test-simple4server.t @@ -75,12 +75,12 @@ Capacity testing =================== - $ wget -q -O - http://localhost:$HGPORT/?cmd=hello + $ curl -s http://localhost:$HGPORT/?cmd=hello capabilities: * _evoext_pushobsmarkers_0 _evoext_pullobsmarkers_0 _evoext_obshash_0 _evoext_obshash_1 _evoext_getbundle_obscommon (glob) - $ wget -q -O - http://localhost:$HGPORT/?cmd=capabilities + $ curl -s http://localhost:$HGPORT/?cmd=capabilities * _evoext_pushobsmarkers_0 _evoext_pullobsmarkers_0 _evoext_obshash_0 _evoext_obshash_1 _evoext_getbundle_obscommon (no-eol) (glob) - $ wget -q -O - "http://localhost:$HGPORT/?cmd=listkeys&namespace=namespaces" | sort + $ curl -s "http://localhost:$HGPORT/?cmd=listkeys&namespace=namespaces" | sort bookmarks namespaces obsolete @@ -133,14 +133,14 @@ =========================================== (used by bitbucket to select which repo use evolve) - $ wget -q -O - "http://localhost:$HGPORT/?cmd=listkeys&namespace=namespaces" | sort + $ curl -s "http://localhost:$HGPORT/?cmd=listkeys&namespace=namespaces" | sort bookmarks namespaces obsolete phases - $ wget -q -O - http://localhost:$HGPORT/?cmd=hello + $ curl -s http://localhost:$HGPORT/?cmd=hello capabilities: * _evoext_pushobsmarkers_0 _evoext_pullobsmarkers_0 _evoext_obshash_0 _evoext_obshash_1 _evoext_getbundle_obscommon (glob) - $ wget -q -O - http://localhost:$HGPORT/?cmd=capabilities + $ curl -s http://localhost:$HGPORT/?cmd=capabilities * _evoext_pushobsmarkers_0 _evoext_pullobsmarkers_0 _evoext_obshash_0 _evoext_obshash_1 _evoext_getbundle_obscommon (no-eol) (glob) $ echo '[__temporary__]' >> server/.hg/hgrc @@ -149,13 +149,13 @@ $ hg serve -R server -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log $ cat hg.pid >> $DAEMON_PIDS - $ wget -q -O - "http://localhost:$HGPORT/?cmd=listkeys&namespace=namespaces" | sort + $ curl -s "http://localhost:$HGPORT/?cmd=listkeys&namespace=namespaces" | sort bookmarks namespaces phases - $ wget -q -O - http://localhost:$HGPORT/?cmd=hello | grep _evoext_pushobsmarkers_0 + $ curl -s http://localhost:$HGPORT/?cmd=hello | grep _evoext_pushobsmarkers_0 [1] - $ wget -q -O - http://localhost:$HGPORT/?cmd=capabilities | grep _evoext_pushobsmarkers_0 + $ curl -s http://localhost:$HGPORT/?cmd=capabilities | grep _evoext_pushobsmarkers_0 [1] $ echo 'advertiseobsolete=True' >> server/.hg/hgrc @@ -163,12 +163,12 @@ $ hg serve -R server -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log $ cat hg.pid >> $DAEMON_PIDS - $ wget -q -O - "http://localhost:$HGPORT/?cmd=listkeys&namespace=namespaces" | sort + $ curl -s "http://localhost:$HGPORT/?cmd=listkeys&namespace=namespaces" | sort bookmarks namespaces obsolete phases - $ wget -q -O - http://localhost:$HGPORT/?cmd=hello + $ curl -s http://localhost:$HGPORT/?cmd=hello capabilities: * _evoext_pushobsmarkers_0 _evoext_pullobsmarkers_0 _evoext_obshash_0 _evoext_obshash_1 _evoext_getbundle_obscommon (glob) - $ wget -q -O - http://localhost:$HGPORT/?cmd=capabilities + $ curl -s http://localhost:$HGPORT/?cmd=capabilities * _evoext_pushobsmarkers_0 _evoext_pullobsmarkers_0 _evoext_obshash_0 _evoext_obshash_1 _evoext_getbundle_obscommon (no-eol) (glob)
--- a/tests/test-stabilize-conflict.t +++ b/tests/test-stabilize-conflict.t @@ -145,6 +145,7 @@ | o changeset: 5:71c18f70c34f | | user: test | | date: Thu Jan 01 00:00:00 1970 +0000 + | | trouble: unstable | | summary: babar count up to fifteen | | | x changeset: 4:5977072d13c5 @@ -235,6 +236,7 @@ | o changeset: 8:1836b91c6c1d | | user: test | | date: Thu Jan 01 00:00:00 1970 +0000 + | | trouble: unstable | | summary: babar count up to fifteen | | | x changeset: 7:e04690b09bc6
--- a/tests/test-stabilize-order.t +++ b/tests/test-stabilize-order.t @@ -209,11 +209,13 @@ | | parent: 12:2256dae6521f | | user: test | | date: Thu Jan 01 00:00:00 1970 +0000 + | | trouble: unstable | | summary: secondambiguous | | | | o changeset: 13:bdc003b6eec2 | |/ user: test | | date: Thu Jan 01 00:00:00 1970 +0000 + | | trouble: unstable | | summary: firstambiguous | | | x changeset: 12:2256dae6521f
--- a/tests/test-tutorial.t +++ b/tests/test-tutorial.t @@ -480,17 +480,18 @@ fold multiple revisions into a single one - By default, folds all the revisions linearly between the given revisions + With --from, folds all the revisions linearly between the given revisions and the parent of the working directory. - Use --exact for folding only the specified revisions while ignoring the - parent of the working directory. In this case, the given revisions must - form a linear unbroken chain. + With --exact, folds only the specified revisions while ignoring the parent + of the working directory. In this case, the given revisions must form a + linear unbroken chain. options ([+] can be repeated): -r --rev VALUE [+] revision to fold --exact only fold specified revisions + --from fold revisions linearly to working copy parent -m --message TEXT use text as commit message -l --logfile FILE read commit message from file -d --date DATE record the specified date as commit date
--- a/tests/test-userguide.t +++ b/tests/test-userguide.t @@ -109,7 +109,7 @@ 7:05e61aab8294 step 1 8:be6d5bc8e4cc step 2 9:35f432d9f7c1 step 3 - $ hg fold -d '0 0' -m 'fix bug 64' -r 7:: + $ hg fold -d '0 0' -m 'fix bug 64' --from -r 7:: 3 changesets folded 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg --hidden shortlog -G -r 6::