diff --git a/__init__.py b/__init__.py index 89dcbfaca32b038a010b264372838dea0c11f4a3_X19pbml0X18ucHk=..211fa793d74ff76067b7347e416e65016e0e9bc0_X19pbml0X18ucHk= 100644 --- a/__init__.py +++ b/__init__.py @@ -14,5 +14,5 @@ ''' -from mercurial import commands, extensions, hg +from mercurial import commands, extensions, hg, util from mercurial.i18n import _ @@ -18,4 +18,8 @@ from mercurial.i18n import _ + +from dulwich.repo import Repo +from dulwich.errors import NotGitRepository + import gitrepo, hgrepo from git_handler import GitHandler @@ -24,6 +28,18 @@ hg.schemes['git'] = gitrepo hg.schemes['git+ssh'] = gitrepo +_oldlocal = hg.schemes['file'] + +def _local(path): + p = util.drop_scheme('file', path) + try: + Repo(p) + return gitrepo + except NotGitRepository: + return _oldlocal(path) + +hg.schemes['file'] = _local + def reposetup(ui, repo): klass = hgrepo.generate_repo_subclass(repo.__class__) repo.__class__ = klass diff --git a/tests/test-git-clone b/tests/test-git-clone index 89dcbfaca32b038a010b264372838dea0c11f4a3_dGVzdHMvdGVzdC1naXQtY2xvbmU=..211fa793d74ff76067b7347e416e65016e0e9bc0_dGVzdHMvdGVzdC1naXQtY2xvbmU= 100755 --- a/tests/test-git-clone +++ b/tests/test-git-clone @@ -37,5 +37,4 @@ git add beta commit -m 'add beta' -# dulwich does not presently support local git repos, workaround cd .. @@ -41,7 +40,2 @@ cd .. -git daemon --base-path="$(pwd)"\ - --listen=localhost\ - --export-all\ - --pid-file=gitdaemon.pid \ - --detach --reuseaddr @@ -47,7 +41,7 @@ -hg clone git://localhost/gitrepo hgrepo +hg clone gitrepo hgrepo cd hgrepo hg log --graph echo % we should have some bookmarks hg book @@ -49,8 +43,5 @@ cd hgrepo hg log --graph echo % we should have some bookmarks hg book - -cd .. -kill `cat gitdaemon.pid` diff --git a/tests/test-git-clone.out b/tests/test-git-clone.out index 89dcbfaca32b038a010b264372838dea0c11f4a3_dGVzdHMvdGVzdC1naXQtY2xvbmUub3V0..211fa793d74ff76067b7347e416e65016e0e9bc0_dGVzdHMvdGVzdC1naXQtY2xvbmUub3V0 100644 --- a/tests/test-git-clone.out +++ b/tests/test-git-clone.out @@ -1,6 +1,6 @@ Initialized empty Git repository in gitrepo/.git/ -fetching from : git://localhost/gitrepo +fetching from : gitrepo importing Hg objects into Git Counting objects: 6, done. Compressing objects: 33% (1/3) Compressing objects: 66% (2/3) Compressing objects: 100% (3/3) Compressing objects: 100% (3/3), done.