[PATCH 6 of 9 hglib] client: add pull command

Idan Kamara idankk86 at gmail.com
Mon Aug 15 14:20:47 CDT 2011


# HG changeset patch
# User Idan Kamara <idankk86 at gmail.com>
# Date 1313435574 -10800
# Node ID 94c2138e465513b8a20e220b6fa51446d1f95e3b
# Parent  218475e1b5f174b7ec9ef3fe56da574032529602
client: add pull command

diff -r 218475e1b5f1 -r 94c2138e4655 hglib/client.py
--- a/hglib/client.py	Mon Aug 15 22:12:54 2011 +0300
+++ b/hglib/client.py	Mon Aug 15 22:12:54 2011 +0300
@@ -518,6 +518,24 @@
             out = self.rawcommand(args)
             return out.rstrip()
 
+    def pull(self, source=None, rev=None, update=False, force=False, bookmark=None,
+             branch=None, ssh=None, remotecmd=None, insecure=False, tool=None):
+        args = cmdbuilder('pull', source, r=rev, u=update, f=force, B=bookmark,
+                          b=branch, e=ssh, remotecmd=remotecmd, insecure=insecure,
+                          t=tool)
+
+        # we could use Python 3 nonlocal here...
+        success = [True]
+
+        def eh(ret, out, err):
+            if ret == 1:
+                success[0] = False
+            else:
+                raise error.CommandError(args, ret, out, err)
+
+        self.rawcommand(args, eh=eh)
+        return success[0]
+
     def push(self, dest=None, rev=None, force=False, bookmark=None, branch=None,
              newbranch=False, ssh=None, remotecmd=None, insecure=False):
         args = cmdbuilder('push', dest, r=rev, f=force, B=bookmark, b=branch,
diff -r 218475e1b5f1 -r 94c2138e4655 tests/test-pull.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-pull.py	Mon Aug 15 22:12:54 2011 +0300
@@ -0,0 +1,29 @@
+import common, hglib
+
+class test_pull(common.basetest):
+    def test_basic(self):
+        self.append('a', 'a')
+        self.client.commit('first', addremove=True)
+
+        self.client.clone(dest='other')
+        other = hglib.open('other')
+
+        self.append('a', 'a')
+        self.client.commit('second')
+
+        self.assertTrue(other.pull())
+        self.assertEquals(self.client.log(), other.log())
+
+    def test_unresolved(self):
+        self.append('a', 'a')
+        self.client.commit('first', addremove=True)
+
+        self.client.clone(dest='other')
+        other = hglib.open('other')
+
+        self.append('a', 'a')
+        self.client.commit('second')
+
+        self.append('other/a', 'b')
+        self.assertFalse(other.pull(update=True))
+        self.assertTrue(('M', 'a') in other.status())


More information about the Mercurial-devel mailing list