diff --git a/gclient_scm.py b/gclient_scm.py index 2d773a355..c78559076 100644 --- a/gclient_scm.py +++ b/gclient_scm.py @@ -67,6 +67,7 @@ def GetScmName(url): if url: url, _ = gclient_utils.SplitUrlRevision(url) if (url.startswith('git://') or url.startswith('ssh://') or + url.startswith('git+http://') or url.startswith('git+https://') or url.endswith('.git')): return 'git' elif (url.startswith('http://') or url.startswith('https://') or @@ -126,6 +127,12 @@ class SCMWrapper(object): class GitWrapper(SCMWrapper): """Wrapper for Git""" + def __init__(self, url=None, root_dir=None, relpath=None): + """Removes 'git+' fake prefix from git URL.""" + if url.startswith('git+http://') or url.startswith('git+https://'): + url = url[4:] + SCMWrapper.__init__(self, url, root_dir, relpath) + def GetRevisionDate(self, revision): """Returns the given revision's date in ISO-8601 format (which contains the time zone).""" diff --git a/tests/gclient_scm_test.py b/tests/gclient_scm_test.py index a44754f1d..a0e24aa11 100755 --- a/tests/gclient_scm_test.py +++ b/tests/gclient_scm_test.py @@ -120,6 +120,22 @@ class SVNWrapperTestCase(BaseTestCase): relpath=self.relpath) self.assertEqual(scm.FullUrlForRelativeUrl('/crap'), 'git://a/b/c/crap') + def testGITFakeHttpUrl(self): + self.url = 'git+http://foo' + + self.mox.ReplayAll() + scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, + relpath=self.relpath) + self.assertEqual(scm.url, 'http://foo') + + def testGITFakeHttpsUrl(self): + self.url = 'git+https://foo' + + self.mox.ReplayAll() + scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, + relpath=self.relpath) + self.assertEqual(scm.url, 'https://foo') + def testRunCommandException(self): options = self.Options(verbose=False) gclient_scm.os.path.exists(join(self.base_path, '.git')).AndReturn(False)