[PATCH 4 of 6 hglib] hglib: add top level clone method

Idan Kamara idankk86 at gmail.com
Thu Dec 22 11:18:43 CST 2011


# HG changeset patch
# User Idan Kamara <idankk86 at gmail.com>
# Date 1324573967 -7200
# Node ID a4fcece7dd8eeeb65bbdfcc679e7f1822d88ad44
# Parent  07efbd3bd09a199bc536e384ca15f492e8caa15d
hglib: add top level clone method

diff --git a/hglib/__init__.py b/hglib/__init__.py
--- a/hglib/__init__.py
+++ b/hglib/__init__.py
@@ -20,3 +20,19 @@
         raise error.CommandError(args, proc.returncode, out, err)
 
     return client.hgclient(dest, encoding, configs, connect=False)
+
+def clone(source=None, dest=None, noupdate=False, updaterev=None, rev=None,
+          branch=None, pull=False, uncompressed=False, ssh=None, remotecmd=None,
+          insecure=False, encoding=None, configs=None):
+    args = util.cmdbuilder('clone', source, dest, noupdate=noupdate,
+                           updaterev=updaterev, rev=rev, branch=branch,
+                           pull=pull, uncompresses=uncompressed,
+                           e=ssh, remotecmd=remotecmd, insecure=insecure)
+
+    args.insert(0, HGPATH)
+    proc = util.popen(args)
+    out, err = proc.communicate()
+    if proc.returncode:
+        raise error.CommandError(args, proc.returncode, out, err)
+
+    return client.hgclient(dest, encoding, configs, connect=False)
diff --git a/tests/test-clone.py b/tests/test-clone.py
new file mode 100644
--- /dev/null
+++ b/tests/test-clone.py
@@ -0,0 +1,12 @@
+import os
+import common
+import hglib
+
+class test_clone(common.basetest):
+    def test_basic(self):
+        self.append('a', 'a')
+        self.client.commit('first', addremove=True)
+        cloned = hglib.clone('.', 'cloned')
+        self.assertRaises(ValueError, cloned.log)
+        cloned.open()
+        self.assertEquals(self.client.log(), cloned.log())


More information about the Mercurial-devel mailing list