| Index: recipe_modules/git/api.py | 
| diff --git a/recipe_modules/git/api.py b/recipe_modules/git/api.py | 
| index 2983a190915d972a5882a617e84cf2acec7a48da..00524b9622ce700cb871d6e221cbc411318124f4 100644 | 
| --- a/recipe_modules/git/api.py | 
| +++ b/recipe_modules/git/api.py | 
| @@ -16,7 +16,7 @@ class GitApi(recipe_api.RecipeApi): | 
|  | 
| def __call__(self, *args, **kwargs): | 
| """Return a git command step.""" | 
| -    name = kwargs.pop('name', 'git '+args[0]) | 
| +    name = kwargs.pop('name', 'git ' + args[0]) | 
| infra_step = kwargs.pop('infra_step', True) | 
| if 'cwd' not in kwargs: | 
| kwargs.setdefault('cwd', self.m.path['checkout']) | 
| @@ -133,8 +133,10 @@ class GitApi(recipe_api.RecipeApi): | 
| curl_trace_file=None, can_fail_build=True, | 
| set_got_revision=False, remote_name=None, | 
| display_fetch_size=None, file_name=None, | 
| -               submodule_update_recursive=True): | 
| -    """Returns an iterable of steps to perform a full git checkout. | 
| +               submodule_update_recursive=True, | 
| +               use_git_cache=False): | 
| +    """Performs a full git checkout and returns sha1 of checked out revision. | 
| + | 
| Args: | 
| url (str): url of remote repo to use as upstream | 
| ref (str): ref to fetch and check out | 
| @@ -157,6 +159,13 @@ class GitApi(recipe_api.RecipeApi): | 
| file_name (str): optional path to a single file to checkout. | 
| submodule_update_recursive (bool): if True, updates submodules | 
| recursively. | 
| +      use_git_cache (bool): if True, git cache will be used for this checkout. | 
| +          WARNING, this is EXPERIMENTAL!!! This wasn't tested with: | 
| +           * submodules | 
| +           * since origin url is modified | 
| +             to a local path, may cause problem with scripts that do | 
| +             "git fetch origin" or "git push origin". | 
| +           * arbitrary refs such refs/whatever/not-fetched-by-default-to-cache | 
|  | 
| Returns: If the checkout was successful, this returns the commit hash of | 
| the checked-out-repo. Otherwise this returns None. | 
| @@ -199,6 +208,12 @@ class GitApi(recipe_api.RecipeApi): | 
| self.resource('git_setup.py'), | 
| git_setup_args) | 
|  | 
| +    if use_git_cache: | 
| +      self('retry', 'cache', 'fetch', '-c', self.m.path['git_cache'], | 
| +           cwd=dir_path, | 
| +           name='fetch cache', | 
| +           can_fail_build=can_fail_build) | 
| + | 
| # There are five kinds of refs we can be handed: | 
| # 0) None. In this case, we default to properties['branch']. | 
| # 1) A 40-character SHA1 hash. | 
|  |