# HG changeset patch # User Idan Kamara # Date 1313437605 -10800 # Node ID 0555d58a73138510306649ec658a5439f11ae71e # Parent 32f6a2bbf63e3f48c35f19a84012f4ec12466103 client: add push command diff -r 32f6a2bbf63e -r 0555d58a7313 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 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, + new_branch=newbranch, e=ssh, remotecmd=remotecmd, + insecure=insecure) + + # we could use Python 3 nonlocal here... + pushed = [True] + + def eh(ret, out, err): + if ret == 1: + pushed[0] = False + else: + raise error.CommandError(args, ret, out, err) + + self.rawcommand(args, eh=eh) + return pushed[0] + def remove(self, files, after=False, force=False, include=None, exclude=None): if not isinstance(files, list): files = [files] diff -r 32f6a2bbf63e -r 0555d58a7313 tests/test-push.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push.py Mon Aug 15 22:46:45 2011 +0300 @@ -0,0 +1,18 @@ +import common, hglib + +class test_push(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') + + # broken in hg, doesn't return 1 if nothing to push + #self.assertFalse(self.client.push('other')) + + self.append('a', 'a') + self.client.commit('second') + + self.assertTrue(self.client.push('other')) + self.assertEquals(self.client.log(), other.log())