site

(Pierre-Yves David)
2011-09-08: [obsolete] Update pushkey code

[obsolete] Update pushkey code

diff --git a/hgext/obsolete.py b/hgext/obsolete.py
--- a/hgext/obsolete.py
+++ b/hgext/obsolete.py
@@ -229,19 +229,20 @@ def reposetup(ui, repo):
         ### pull // push support
 
         def pull(self, remote, *args, **kwargs):
-            obskey = remote.listkeys('obsolete')
-            obsrels = obskey.get('relations', {})
             result = opull(remote, *args, **kwargs)
-            for sub, objs in obsrels.iteritems():
-                for obj in objs:
-                    self.addobsolete(sub, obj)
+            if 'obsolete' in remote.listkeys('namespaces'):
+                tmp = StringIO()
+                tmp.write(remote.listkeys('obsolete')['relations'])
+                tmp.seek(0)
+                obsrels = repo._obsdeserialise(tmp)
+                for sub, objs in obsrels.iteritems():
+                    for obj in objs:
+                        self.addobsolete(sub, obj)
             return result
 
         def push(self, remote, *args, **opts):
-            obskey = remote.listkeys('obsolete')
-            obssupport = 'relations' in obskey
             result = opush(remote, *args, **opts)
-            if obssupport:
+            if 'obsolete' in remote.listkeys('namespaces'):
                 tmp = StringIO()
                 repo._obsserialise(tmp)
                 remote.pushkey('obsolete', 'relations', {}, tmp.getvalue())