[PATCH 2 of 3 hglib] client: add merge command

Idan Kamara idankk86 at gmail.com
Tue Aug 16 15:59:22 CDT 2011


# HG changeset patch
# User Idan Kamara <idankk86 at gmail.com>
# Date 1313528241 -10800
# Node ID 191855a9d813dbefa7144832d08a6e4965f6f660
# Parent  3a661f63107ef2beb90fb49009eea9118eb8d4bc
client: add merge command

diff -r 3a661f63107e -r 191855a9d813 hglib/client.py
--- 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):
diff -r 3a661f63107e -r 191855a9d813 tests/test-merge.py
--- /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))


More information about the Mercurial-devel mailing list