# HG changeset patch # User Scott Chacon # Date 1241041932 25200 # Node ID bd8fa1a9288866fe471ae1c9b28e9de558f0018c # Parent eb05594fc3c8f243337eb714eaf9982ee82b3a16# Parent 52d45a331c92dd54d0f2376be68b08c9ec8c0e95 Merged in defunkts changes diff -r eb05594fc3c8 -r bd8fa1a92888 .gitignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.gitignore Wed Apr 29 14:52:12 2009 -0700 @@ -0,0 +1,1 @@ +*.pyc diff -r eb05594fc3c8 -r bd8fa1a92888 __init__.py --- a/__init__.py Wed Apr 29 14:51:20 2009 -0700 +++ b/__init__.py Wed Apr 29 14:52:12 2009 -0700 @@ -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: diff -r eb05594fc3c8 -r bd8fa1a92888 gitrepo.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gitrepo.py Wed Apr 29 14:52:12 2009 -0700 @@ -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