Mercurial > hg > hg-git
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
--- 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