push: add extra warning about pushing to old server
authorPierre-Yves David <pierre-yves.david@ens-lyon.org>
Tue, 07 Mar 2017 14:59:00 +0100
changeset 2057 4c195eb4d2c5
parent 2056 b96ca1b51e04
child 2058 92c2a54f98ee
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.
hgext3rd/evolve/obsexchange.py
tests/test-simple4server.t
--- 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