changeset 45:191855a9d813

client: add merge command
author Idan Kamara <idankk86@gmail.com>
date Tue, 16 Aug 2011 23:57:21 +0300
parents 3a661f63107e
children ebcc5d7dd528
files hglib/client.py tests/test-merge.py
diffstat 2 files changed, 35 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/hglib/client.py	Tue Aug 16 23:50:01 2011 +0300
+++ b/hglib/client.py	Tue Aug 16 23:57:21 2011 +0300
@@ -442,6 +442,12 @@
 
         return self._parserevs(out)
 
+    def merge(self, rev=None, force=False, tool=None, cb=None):
+        # we can't really use --preview since merge doesn't support --template
+        args = cmdbuilder('merge', r=rev, f=force, t=tool)
+
+        self.rawcommand(args, prompt=cb)
+
     def move(self, source, dest, after=False, force=False, dryrun=False,
              include=None, exclude=None):
         if not isinstance(source, list):
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-merge.py	Tue Aug 16 23:57:21 2011 +0300
@@ -0,0 +1,29 @@
+import common, hglib
+
+class test_merge(common.basetest):
+    def setUp(self):
+        common.basetest.setUp(self)
+
+        self.append('a', 'a')
+        rev, self.node0 = self.client.commit('first', addremove=True)
+
+        self.append('a', 'a')
+        rev, self.node1 = self.client.commit('change')
+
+    def test_basic(self):
+        self.client.update(self.node0)
+        self.append('b', 'a')
+        rev, node2 = self.client.commit('new file', addremove=True)
+        self.client.merge(self.node1)
+        rev, node = self.client.commit('merge')
+        diff = """diff -r %s -r %s a
+--- a/a
++++ b/a
+@@ -1,1 +1,1 @@
+-a
+\ No newline at end of file
++aa
+\ No newline at end of file
+""" % (node2[:12], node[:12])
+
+        self.assertEquals(diff, self.client.diff(change=node, nodates=True))