merge with future 5.6.0
There is only minor test output change, 4.0 do not have the "trouble:" wording
in there.
--- a/.hgtags Wed Feb 01 15:09:06 2017 +0100
+++ b/.hgtags Wed Feb 01 15:15:34 2017 +0100
@@ -42,3 +42,4 @@
b21ce82e6f7640c2b38506545968650227d67e9b 5.4.0
2ad40d972a740a613c4c559104166a015b37cac2 5.4.1
727c7211c810d304ebf92b32db7ecf697ce46ac6 5.5.0
+99ede2d775458a236a46ad25a93aca473b676eee 5.6.0
--- a/MANIFEST.in Wed Feb 01 15:09:06 2017 +0100
+++ b/MANIFEST.in Wed Feb 01 15:15:34 2017 +0100
@@ -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 Wed Feb 01 15:09:06 2017 +0100
+++ b/Makefile Wed Feb 01 15:15:34 2017 +0100
@@ -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 Wed Feb 01 15:09:06 2017 +0100
+++ b/README Wed Feb 01 15:15:34 2017 +0100
@@ -56,8 +56,11 @@
Changelog
=========
-5.5.1 --
+5.6.0 -- 2016-10-30
+ - compatibility with Mercurial 4.1.
+ - improvement of prune error message.
+ - fold: require --from flag for folding revisions to working copy
- fix crash when trying to fold an empty revision set (issue5453)
- uncommit: preserve copy information of remaining files (issue5403)
--- a/debian/changelog Wed Feb 01 15:09:06 2017 +0100
+++ b/debian/changelog Wed Feb 01 15:15:34 2017 +0100
@@ -1,4 +1,10 @@
-mercurial-evolve (5.5.0) unstable; urgency=medium
+mercurial-evolve (5.6.0-1) UNRELEASED; urgency=medium
+
+ * New Upstream Release
+
+ -- Pierre-Yves David <marmoute@nodosa.octopoid.net> Wed, 01 Feb 2017 15:06:21 +0100
+
+mercurial-evolve (5.5.0-1) unstable; urgency=medium
* new upstream release
--- a/hgext/evolve.py Wed Feb 01 15:09:06 2017 +0100
+++ b/hgext/evolve.py Wed Feb 01 15:15:34 2017 +0100
@@ -19,8 +19,8 @@
- improves some aspect of the early implementation in Mercurial core
'''
-__version__ = '5.5.0'
-testedwith = '3.4.3 3.5.2 3.6.2 3.7.3 3.8.1 3.9 4.0'
+__version__ = '5.6.0'
+testedwith = '3.4.3 3.5.2 3.6.2 3.7.3 3.8.1 3.9 4.0 4.1'
buglink = 'https://bz.mercurial-scm.org/'
@@ -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):
+ return wireproto.streamres(proto.groupchunks(d))
+else:
+ # Leave chunking and compression to streamres
+ def streamres(d, proto):
+ return 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 Wed Feb 01 15:09:06 2017 +0100
+++ b/hgext/simple4server.py Wed Feb 01 15:15:34 2017 +0100
@@ -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 Wed Feb 01 15:09:06 2017 +0100
+++ b/tests/test-evolve.t Wed Feb 01 15:15:34 2017 +0100
@@ -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-simple4server-bundle2.t Wed Feb 01 15:09:06 2017 +0100
+++ b/tests/test-simple4server-bundle2.t Wed Feb 01 15:15:34 2017 +0100
@@ -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 Wed Feb 01 15:09:06 2017 +0100
+++ b/tests/test-simple4server.t Wed Feb 01 15:15:34 2017 +0100
@@ -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-tutorial.t Wed Feb 01 15:09:06 2017 +0100
+++ b/tests/test-tutorial.t Wed Feb 01 15:15:34 2017 +0100
@@ -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 Wed Feb 01 15:09:06 2017 +0100
+++ b/tests/test-userguide.t Wed Feb 01 15:15:34 2017 +0100
@@ -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::