Chromium Code Reviews| Index: recipe_modules/git/api.py |
| diff --git a/recipe_modules/git/api.py b/recipe_modules/git/api.py |
| index e8003dc666c9e7c2e8e554ec544bd50cc3035064..0aa78b36d8bff0beb2c6ef3ec35154bd34bea7ab 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_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_git_tooling(self): |
|
Michael Achenbach
2016/03/01 14:20:37
Maybe make the name windows-specific or make the m
|
| + """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,7 @@ 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')] |
| + 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( |