push: add extra warning about pushing to old server
Pushing using old method is slow and racy. We adds warning to point this to the
user.
We also add inline comment to clarify the function purpose.
--- a/hgext3rd/evolve/obsexchange.py Tue Mar 07 14:45:02 2017 +0100
+++ b/hgext3rd/evolve/obsexchange.py Tue Mar 07 14:59:00 2017 +0100
@@ -60,6 +60,11 @@
yield d
d = self.read(4096)
+# compat-code: _pushobsolete
+#
+# the _pushobsolete function is a core function used to exchange
+# obsmarker with repository that does not support bundle2
+
@eh.wrapfunction(exchange, '_pushobsolete')
def _pushobsolete(orig, pushop):
"""utility function to push obsolete markers to a remote"""
@@ -78,6 +83,10 @@
if not markers:
obsexcmsg(repo.ui, "no marker to push\n")
elif remote.capable('_evoext_pushobsmarkers_0'):
+ msg = ('the remote repository use years old versions of Mercurial'
+ ' and evolve\npushing obsmarker using legacy method\n')
+ repo.ui.warn(msg)
+ repo.ui.warn('(please upgrade your server)\n')
obsdata = pushobsmarkerStringIO()
for chunk in obsolete.encodemarkers(markers, True):
obsdata.write(chunk)
@@ -89,6 +98,14 @@
remote.evoext_pushobsmarkers_0(obsdata)
obsexcprg(repo.ui, None)
else:
+ # XXX core could be able do the same things but without the debug
+ # and progress output.
+ msg = ('the remote repository usea years old version of Mercurial'
+ ' and not evolve extension\n')
+ repo.ui.warn(msg)
+ msg = 'pushing obsmarker using and extremely slow legacy method\n'
+ repo.ui.warn(msg)
+ repo.ui.warn('(please upgrade your server and enable evolve.serveronly on it)\n')
rslts = []
remotedata = _pushkeyescape(markers).items()
totalbytes = sum(len(d) for k, d in remotedata)
--- a/tests/test-simple4server.t Tue Mar 07 14:45:02 2017 +0100
+++ b/tests/test-simple4server.t Tue Mar 07 14:59:00 2017 +0100
@@ -108,6 +108,9 @@
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files (+1 heads)
+ the remote repository use years old versions of Mercurial and evolve
+ pushing obsmarker using legacy method
+ (please upgrade your server)
pushing 2 obsolescence markers (* bytes) (glob)
remote: 2 obsolescence markers added
$ cat ../errors.log