From 4e07567f5242cf095da7314387c0111ad206ca1e Mon Sep 17 00:00:00 2001 From: "igorgatis@gmail.com" Date: Mon, 21 Nov 2011 16:35:08 +0000 Subject: [PATCH] Introduced git+http(s) fake URL schema to support git urls which don't have "filename.git" portion (http://foo/bar vs http://foo/bar/filename.git). Review URL: http://codereview.chromium.org/8590024 git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@110937 0039d316-1c4b-4281-b951-d872f2087c98 --- gclient_scm.py | 7 +++++++ tests/gclient_scm_test.py | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) 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)