Index: recipe_modules/git/api.py |
diff --git a/recipe_modules/git/api.py b/recipe_modules/git/api.py |
index c2d4eb06ddf117c3854acdd969c2876561ae6d4a..d20f8a4dab1d57d1d0681e5a91d0e39b2da3b5ac 100644 |
--- a/recipe_modules/git/api.py |
+++ b/recipe_modules/git/api.py |
@@ -213,11 +213,23 @@ class GitApi(recipe_api.RecipeApi): |
str(self.package_repo_resource()), '%(PATH)s']) |
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, |
- env={'PATH': path}) |
+ with self.m.step.context({'env': {'PATH': path}}): |
+ self('retry', 'cache', 'populate', '-c', self.m.path['git_cache'], url, |
+ name='populate cache', |
+ can_fail_build=can_fail_build, |
+ cwd=dir_path) |
+ dir_cmd = self( |
+ 'cache', 'exists', '--quiet', |
+ '--cache-dir', self.m.path['git_cache'], url, |
+ can_fail_build=can_fail_build, |
+ stdout=self.m.raw_io.output(), |
+ step_test_data=lambda: |
+ self.m.raw_io.test_api.stream_output('mirror_dir'), |
+ cwd=dir_path) |
+ mirror_dir = dir_cmd.stdout.strip() |
+ self('remote', 'set-url', 'origin', mirror_dir, |
+ can_fail_build=can_fail_build, |
+ cwd=dir_path) |
# There are five kinds of refs we can be handed: |
# 0) None. In this case, we default to properties['branch']. |