Fixed update logging.
authorŁukasz Rekucki <lrekucki@gmail.com>
Tue, 29 Sep 2009 15:07:16 +0000 (17:07 +0200)
committerŁukasz Rekucki <lrekucki@gmail.com>
Tue, 29 Sep 2009 15:07:16 +0000 (17:07 +0200)
apps/api/handlers/library_handlers.py
lib/wlrepo/mercurial_backend/__init__.py
lib/wlrepo/mercurial_backend/document.py

index f0ce186..b2ff94b 100644 (file)
@@ -507,7 +507,9 @@ class MergeHandler(BaseHandler):
             success, changed = udoc.share(form.cleaned_data['message'])
 
         if not success:
             success, changed = udoc.share(form.cleaned_data['message'])
 
         if not success:
-            return response.EntityConflict().django_response({})
+            return response.EntityConflict().django_response({
+                'reason': 'merge-failure',
+            })
 
         if not changed:
             return response.SuccessNoContent().django_response()
 
         if not changed:
             return response.SuccessNoContent().django_response()
index 20a39e5..f0d3d07 100644 (file)
@@ -73,7 +73,9 @@ class MercurialRevision(wlrepo.Revision):
         return (a.branch() == self._changectx.branch())
 
     def has_children(self):
         return (a.branch() == self._changectx.branch())
 
     def has_children(self):
-        return bool( self._library._hgrepo.changelog.children(self.hgrev()) )   
+        children = self._library._hgrepo.changelog.children(self.hgrev())
+        print "C:", children, bool(children)
+        return bool(children)
 
     def merge_with(self, other, user, message):
         lock = self._library.lock(True)
 
     def merge_with(self, other, user, message):
         lock = self._library.lock(True)
index 3f94097..fcfd14c 100644 (file)
@@ -98,15 +98,20 @@ class MercurialDocument(wlrepo.Document):
                 return (True, False)
             
             if self._revision.has_children():
                 return (True, False)
             
             if self._revision.has_children():
+                print 'Update failed: has children.'
                 # can't update non-latest revision
                 return (False, False)
 
             sv = self.shared()
                 # can't update non-latest revision
                 return (False, False)
 
             sv = self.shared()
-            
-            if not sv.ancestorof(self) and not self.parentof(sv):
-                return self._revision.merge_with(sv._revision, user=user)
 
 
-            return (False, False)
+            if self.parentof(sv):
+                return (True, False)
+
+            if sv.ancestorof(self):
+                return (True, False)
+
+
+            return self._revision.merge_with(sv._revision, user=user)
         finally:
             lock.release()  
 
         finally:
             lock.release()