Mercurial > python-hglib
changeset 39:0555d58a7313
client: add push command
author | Idan Kamara <idankk86@gmail.com> |
---|---|
date | Mon, 15 Aug 2011 22:46:45 +0300 |
parents | 32f6a2bbf63e |
children | 238efe4fd7db |
files | hglib/client.py tests/test-push.py |
diffstat | 2 files changed, 36 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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]
--- /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())