obsolete: improve compat with new core dump%i scheme stable 0.6
authorPierre-Yves David <pierre-yves.david@logilab.fr>
Tue, 31 Jul 2012 11:53:41 +0200
branchstable
changeset 404 4a5488c01a66
parent 396 9dda5c1f6a45
child 406 24762f1911ba
obsolete: improve compat with new core dump%i scheme
hgext/obsolete.py
--- a/hgext/obsolete.py	Fri Jul 27 15:04:55 2012 +0200
+++ b/hgext/obsolete.py	Tue Jul 31 11:53:41 2012 +0200
@@ -436,7 +436,9 @@
     if not repo.obsstore:
         return {}
     data = repo.obsstore._writemarkers()
-    return {'dump': base85.b85encode(data)}
+    encdata = base85.b85encode(data)
+    return {'dump0': encdata,
+            'dump': encdata} # legacy compat
 
 def pushmarker(repo, key, old, new):
     """Push markers over pushkey"""
@@ -1189,8 +1191,12 @@
                 result = opull(remote, *args, **kwargs)
                 remoteobs = remote.listkeys('obsolete')
                 if 'dump' in remoteobs:
-                    data = base85.b85decode(remoteobs['dump'])
-                    self.obsstore.mergemarkers(data)
+                    remoteobs['dump0'] = remoteobs.pop('dump')
+                if 'dump0' in remoteobs:
+                    for key, values in remoteobs.iteritems():
+                        if key.startswith('dump'):
+                            data = base85.b85decode(remoteobs['dump0'])
+                            self.obsstore.mergemarkers(data)
                     self._clearobsoletecache()
                     self._turn_extinct_secret()
                     return result
@@ -1211,7 +1217,7 @@
                 raise
             if 'obsolete' in remote.listkeys('namespaces') and self.obsstore:
                 data = self.obsstore._writemarkers()
-                r = remote.pushkey('obsolete', 'dump', '',
+                r = remote.pushkey('obsolete', 'dump0', '',
                                    base85.b85encode(data))
                 if not r:
                     self.ui.warn(_('failed to push obsolete markers!\n'))