| Index: gclient_scm.py
|
| ===================================================================
|
| --- gclient_scm.py (revision 132728)
|
| +++ gclient_scm.py (working copy)
|
| @@ -85,7 +85,10 @@
|
| scm_name = GetScmName(url)
|
| if not scm_name in SCM_MAP:
|
| raise gclient_utils.Error('No SCM found for url %s' % url)
|
| - return SCM_MAP[scm_name](url, root_dir, relpath)
|
| + scm_class = SCM_MAP[scm_name]
|
| + if not scm_class.BinaryExists():
|
| + raise gclient_utils.Error('%s command not found' % scm_name)
|
| + return scm_class(url, root_dir, relpath)
|
|
|
|
|
| # SCMWrapper base class
|
| @@ -133,6 +136,18 @@
|
| url = url[4:]
|
| SCMWrapper.__init__(self, url, root_dir, relpath)
|
|
|
| + @staticmethod
|
| + def BinaryExists():
|
| + """Returns true if the command exists."""
|
| + try:
|
| + # We assume git is newer than 1.7. See: crbug.com/114483
|
| + result, version = scm.GIT.AssertVersion('1.7')
|
| + if not result:
|
| + raise gclient_utils.Error('Git version is older than 1.7: %s' % version)
|
| + return result
|
| + except OSError:
|
| + return False
|
| +
|
| def GetRevisionDate(self, revision):
|
| """Returns the given revision's date in ISO-8601 format (which contains the
|
| time zone)."""
|
| @@ -775,6 +790,17 @@
|
| class SVNWrapper(SCMWrapper):
|
| """ Wrapper for SVN """
|
|
|
| + @staticmethod
|
| + def BinaryExists():
|
| + """Returns true if the command exists."""
|
| + try:
|
| + result, version = scm.SVN.AssertVersion('1.4')
|
| + if not result:
|
| + raise gclient_utils.Error('SVN version is older than 1.4: %s' % version)
|
| + return result
|
| + except OSError:
|
| + return False
|
| +
|
| def GetRevisionDate(self, revision):
|
| """Returns the given revision's date in ISO-8601 format (which contains the
|
| time zone)."""
|
|
|