[PATCH 5 of 9 hglib] client: add push command
Idan Kamara
idankk86 at gmail.com
Mon Aug 15 14:20:46 CDT 2011
# HG changeset patch
# User Idan Kamara <idankk86 at gmail.com>
# Date 1313435574 -10800
# Node ID 218475e1b5f174b7ec9ef3fe56da574032529602
# Parent 589ccf75733ed0f2ac5cecc12f89ca2f18a6e46b
client: add push command
diff -r 589ccf75733e -r 218475e1b5f1 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 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 589ccf75733e -r 218475e1b5f1 tests/test-push.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-push.py Mon Aug 15 22:12:54 2011 +0300
@@ -0,0 +1,18 @@
+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')
+
+ # 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())
More information about the Mercurial-devel
mailing list