changeset 63:bd8fa1a92888

Merged in defunkts changes
author Scott Chacon <schacon@gmail.com>
date Wed, 29 Apr 2009 14:52:12 -0700
parents eb05594fc3c8 (current diff) 52d45a331c92 (diff)
children f8973754189e
files __init__.py
diffstat 3 files changed, 31 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,1 @@
+*.pyc
--- a/__init__.py
+++ b/__init__.py
@@ -26,6 +26,10 @@
 import dulwich
 from git_handler import GitHandler
 
+# support for `hg clone git://github.com/defunkt/facebox.git`
+import gitrepo
+hg.schemes['git'] = gitrepo
+
 def gclone(ui, git_url, hg_repo_path=None):
     # determine new repo name
     if not hg_repo_path:
new file mode 100644
--- /dev/null
+++ b/gitrepo.py
@@ -0,0 +1,26 @@
+from mercurial import hg, repo
+from git_handler import GitHandler
+
+class gitrepo(repo.repository):
+    def __init__(self, ui, path, create=True):
+        dest = hg.defaultdest(path)
+
+        if dest.endswith('.git'):
+            dest = dest[:-4]
+
+        # create the local hg repo on disk
+        dest_repo = hg.repository(ui, dest, create=True)
+
+        # fetch the initial git data
+        git = GitHandler(dest_repo, ui)
+        git.remote_add('origin', path)
+        git.fetch('origin')
+
+        # checkout the tip
+        node = git.remote_head('origin')
+        hg.update(dest_repo, node)
+
+        # exit to stop normal `hg clone` flow
+        raise SystemExit
+
+instance = gitrepo