[PATCH 3 of 3 hglib] client: add missing options to commit()

Idan Kamara idankk86 at gmail.com
Wed Aug 10 12:34:45 CDT 2011


# HG changeset patch
# User Idan Kamara <idankk86 at gmail.com>
# Date 1312997588 -10800
# Node ID 5c1ba9b8780c98bb4c7df7b61e5b4dd86c05fa1c
# Parent  21190e06aa2d4744356f42b3f072d039a5d3bc50
client: add missing options to commit()

diff -r 21190e06aa2d -r 5c1ba9b8780c hglib/client.py
--- a/hglib/client.py	Wed Aug 10 19:59:08 2011 +0300
+++ b/hglib/client.py	Wed Aug 10 20:33:08 2011 +0300
@@ -180,9 +180,17 @@
         args = cmdbuilder('clone', source, dest, b=branch, u=updaterev, r=revrange)
         self.rawcommand(args)
 
-    def commit(self, message, addremove=False):
+    def commit(self, message=None, logfile=None, addremove=False, closebranch=False,
+               date=None, user=None, include=None, exclude=None):
+        if message is None and logfile is None:
+            raise ValueError("must provide at least a message or a logfile")
+        elif message and logfile:
+            raise ValueError("cannot specify both a message and a logfile")
+
         # --debug will print the committed cset
-        args = cmdbuilder('commit', debug=True, m=message, A=addremove)
+        args = cmdbuilder('commit', debug=True, m=message, A=addremove,
+                          close_branch=closebranch, d=date, u=user, l=logfile,
+                          I=include, X=exclude)
 
         out = self.rawcommand(args)
         rev, node = out.splitlines()[-1].rsplit(':')
diff -r 21190e06aa2d -r 5c1ba9b8780c tests/test-commit.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-commit.py	Wed Aug 10 20:33:08 2011 +0300
@@ -0,0 +1,32 @@
+import common, hglib
+
+class test_commit(common.basetest):
+    def test_user(self):
+        self.append('a', 'a')
+        rev, node = self.client.commit('first', addremove=True, user='foo')
+        rev = self.client.log(node)[0]
+        self.assertEquals(rev.author, 'foo')
+
+    def test_no_user(self):
+        self.append('a', 'a')
+        self.assertRaises(hglib.error.CommandError, self.client.commit, 'first', user='')
+
+    def test_close_branch(self):
+        self.append('a', 'a')
+        rev0, node0 = self.client.commit('first', addremove=True)
+        self.client.branch('foo')
+        self.append('a', 'a')
+        rev1, node1 = self.client.commit('second')
+        revclose = self.client.commit('closing foo', closebranch=True)
+        rev0, rev1, revclose = self.client.log([node0, node1, revclose[1]])
+
+        self.assertEquals(self.client.branches(),
+                          [(rev0.branch, int(rev0.rev), rev0.node[:12])])
+
+        self.assertEquals(self.client.branches(closed=True),
+                          [(revclose.branch, int(revclose.rev), revclose.node[:12]),
+                           (rev0.branch, int(rev0.rev), rev0.node[:12])])
+
+    def test_message_logfile(self):
+        self.assertRaises(ValueError, self.client.commit, 'foo', logfile='bar')
+        self.assertRaises(ValueError, self.client.commit)


More information about the Mercurial-devel mailing list