| Index: recipe_modules/git/api.py
|
| diff --git a/recipe_modules/git/api.py b/recipe_modules/git/api.py
|
| index e8003dc666c9e7c2e8e554ec544bd50cc3035064..d2d84f972ba4d7c50e36d9cf4f700059d68b317e 100644
|
| --- a/recipe_modules/git/api.py
|
| +++ b/recipe_modules/git/api.py
|
| @@ -10,6 +10,10 @@ from recipe_engine import recipe_api
|
| class GitApi(recipe_api.RecipeApi):
|
| _GIT_HASH_RE = re.compile('[0-9a-f]{40}', re.IGNORECASE)
|
|
|
| + def __init__(self, *args, **kwargs):
|
| + super(GitApi, self).__init__(*args, **kwargs)
|
| + self.initialized_win_git = False
|
| +
|
| def __call__(self, *args, **kwargs):
|
| """Return a git command step."""
|
| name = kwargs.pop('name', 'git '+args[0])
|
| @@ -18,7 +22,8 @@ class GitApi(recipe_api.RecipeApi):
|
| kwargs.setdefault('cwd', self.m.path['checkout'])
|
| git_cmd = ['git']
|
| if self.m.platform.is_win:
|
| - git_cmd = [self.m.path['depot_tools'].join('git.bat')]
|
| + self.ensure_win_git_tooling()
|
| + git_cmd = [self.package_resource('git.bat')]
|
| options = kwargs.pop('git_config_options', {})
|
| for k, v in sorted(options.iteritems()):
|
| git_cmd.extend(['-c', '%s=%s' % (k, v)])
|
| @@ -32,6 +37,17 @@ class GitApi(recipe_api.RecipeApi):
|
| else:
|
| return f.result
|
|
|
| + def ensure_win_git_tooling(self):
|
| + """Ensures that depot_tools/git.bat actually exists."""
|
| + if not self.m.platform.is_win or self.initialized_win_git:
|
| + return
|
| + self.m.step(
|
| + 'ensure git tooling on windows',
|
| + [self.package_resource('bootstrap', 'win', 'win_tools.bat')],
|
| + infra_step=True,
|
| + cwd=self.package_resource())
|
| + self.initialized_win_git = True
|
| +
|
| def fetch_tags(self, remote_name=None, **kwargs):
|
| """Fetches all tags from the remote."""
|
| kwargs.setdefault('name', 'git fetch tags')
|
| @@ -172,8 +188,8 @@ class GitApi(recipe_api.RecipeApi):
|
| remote_name = 'origin'
|
|
|
| if self.m.platform.is_win:
|
| - git_setup_args += ['--git_cmd_path',
|
| - self.m.path['depot_tools'].join('git.bat')]
|
| + self.ensure_win_git_tooling()
|
| + git_setup_args += ['--git_cmd_path', self.package_resource('git.bat')]
|
|
|
| step_suffix = '' if step_suffix is None else ' (%s)' % step_suffix
|
| self.m.python(
|
|
|