--- a/hgext/evolve.py Mon Mar 03 22:18:05 2014 -0800
+++ b/hgext/evolve.py Mon Mar 03 22:46:46 2014 -0800
@@ -24,7 +24,7 @@
import sys
import random
-from cStringIO import StringIO
+from StringIO import StringIO
import struct
import mercurial
@@ -2110,6 +2110,20 @@
for mark in markers:
fp.write(obsolete._encodeonemarker(mark))
+class pushobsmarkerStringIO(StringIO):
+ """hacky string io for progress"""
+
+ @util.propertycache
+ def _length(self):
+ return len(self.getvalue())
+
+ def read(self, size):
+ self.ui.progress('OBSEXC', self.tell(), unit="bytes",
+ total=self._length)
+ return StringIO.read(self, size)
+
+
+
@eh.wrapfunction(exchange, '_pushobsolete')
def _pushobsolete(orig, pushop):
"""utility function to push obsolete markers to a remote"""
@@ -2126,12 +2140,14 @@
markers = repo.obsstore.relevantmarkers(nodes)
if remote.capable('_evoext_pushobsmarkers_0'):
repo.ui.status("OBSEXC: writing %i markers\n" % len(markers))
- obsdata = StringIO()
+ obsdata = pushobsmarkerStringIO()
_encodemarkersstream(obsdata, markers)
obsdata.seek(0)
+ obsdata.ui = repo.ui
repo.ui.status("OBSEXC: pushing %i bytes\n"
% len(obsdata.getvalue()))
remote.evoext_pushobsmarkers_0(obsdata)
+ repo.ui.progress('OBSEXC', None)
else:
rslts = []
repo.ui.status("OBSEXC: encoding %i markers\n" % len(markers))