Chromium Code Reviews| Index: recipe_modules/bot_update/resources/bot_update.py |
| diff --git a/recipe_modules/bot_update/resources/bot_update.py b/recipe_modules/bot_update/resources/bot_update.py |
| index 39c4bf61d7868be0ac5d80162527447fdc8b1cff..c00e773c765c2bc0fdd3ffcf401e84830046f340 100755 |
| --- a/recipe_modules/bot_update/resources/bot_update.py |
| +++ b/recipe_modules/bot_update/resources/bot_update.py |
| @@ -1130,14 +1130,15 @@ def apply_rietveld_issue(issue, patchset, root, server, _rev_map, _revision, |
| except SubprocessFailed as e: |
| raise PatchFailed(e.message, e.code, e.output) |
| -def apply_gerrit_ref(gerrit_repo, gerrit_ref, root): |
| +def apply_gerrit_ref(gerrit_repo, gerrit_ref, root, reset_soft): |
| gerrit_repo = gerrit_repo or 'origin' |
| assert gerrit_ref |
| try: |
| base_rev = git('rev-parse', 'HEAD', cwd=root).strip() |
| git('retry', 'fetch', gerrit_repo, gerrit_ref, cwd=root, tries=1) |
| git('checkout', 'FETCH_HEAD', cwd=root) |
| - git('reset', '--soft', base_rev, cwd=root) |
| + if not reset_soft: |
|
hinoka
2016/03/25 12:48:17
if reset_soft:
Yoshisato Yanagisawa
2016/03/28 02:00:52
good catch ;p
|
| + git('reset', '--soft', base_rev, cwd=root) |
| except SubprocessFailed as e: |
| raise PatchFailed(e.message, e.code, e.output) |
| @@ -1295,7 +1296,8 @@ def ensure_checkout(solutions, revisions, first_sln, target_os, target_os_only, |
| patch_root, issue, patchset, patch_url, rietveld_server, |
| gerrit_repo, gerrit_ref, revision_mapping, |
| apply_issue_email_file, apply_issue_key_file, buildspec, |
| - gyp_env, shallow, runhooks, refs, git_cache_dir): |
| + gyp_env, shallow, runhooks, refs, git_cache_dir, |
| + reset_soft): |
| # Get a checkout of each solution, without DEPS or hooks. |
| # Calling git directly because there is no way to run Gclient without |
| # invoking DEPS. |
| @@ -1361,7 +1363,7 @@ def ensure_checkout(solutions, revisions, first_sln, target_os, target_os_only, |
| revision_mapping, git_ref, apply_issue_email_file, |
| apply_issue_key_file, blacklist=already_patched) |
| elif gerrit_ref: |
| - apply_gerrit_ref(gerrit_repo, gerrit_ref, patch_root) |
| + apply_gerrit_ref(gerrit_repo, gerrit_ref, patch_root, reset_soft) |
| # Reset the deps_file point in the solutions so that hooks get run properly. |
| for sln in solutions: |
| @@ -1491,6 +1493,8 @@ def parse_args(): |
| 'does the same thing as --refs +refs/branch-heads/*') |
| parse.add_option('--git-cache-dir', default=path.join(SLAVE_DIR, 'cache_dir'), |
| help='Path to git cache directory.') |
| + parse.add_option('--no_reset_soft', action='store_true', |
| + help='Bypass calling reset --soft after git fetch.') |
|
hinoka
2016/03/25 12:48:17
I think the name "--gerrit_no_reset" is better, si
Yoshisato Yanagisawa
2016/03/28 02:00:52
Done.
|
| options, args = parse.parse_args() |
| @@ -1609,7 +1613,8 @@ def checkout(options, git_slns, specs, buildspec, master, |
| # Finally, extra configurations such as shallowness of the clone. |
| shallow=options.shallow, |
| refs=options.refs, |
| - git_cache_dir=options.git_cache_dir) |
| + git_cache_dir=options.git_cache_dir, |
| + reset_soft=not options.no_reset_soft) |
| gclient_output = ensure_checkout(**checkout_parameters) |
| except GclientSyncFailed: |
| print 'We failed gclient sync, lets delete the checkout and retry.' |