# HG changeset patch # User Idan Kamara # Date 1313437605 -10800 # Node ID 238efe4fd7dbcd9afc3d6ac63a18ab8d0946bd4d # Parent 0555d58a73138510306649ec658a5439f11ae71e client: add pull command diff -r 0555d58a7313 -r 238efe4fd7db hglib/client.py --- a/hglib/client.py Mon Aug 15 22:46:45 2011 +0300 +++ b/hglib/client.py Mon Aug 15 22:46:45 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 0555d58a7313 -r 238efe4fd7db tests/test-pull.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-pull.py Mon Aug 15 22:46:45 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())