From f78690b687523c69512f18979d5c1af613aa0b75 Mon Sep 17 00:00:00 2001 From: Andrii Shyshkalov Date: Wed, 15 Nov 2017 07:49:43 -0800 Subject: [PATCH] bot_update: refactor hiding ugly revision details into lower layers. Bug: Change-Id: Ie1caef2d58dce12bafbbec29fa4a5cc65076626c Reviewed-on: https://chromium-review.googlesource.com/771856 Commit-Queue: Andrii Shyshkalov Reviewed-by: Jao-ke Chin-Lee --- .../bot_update/resources/bot_update.py | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/recipes/recipe_modules/bot_update/resources/bot_update.py b/recipes/recipe_modules/bot_update/resources/bot_update.py index 1d3535758..12453b615 100755 --- a/recipes/recipe_modules/bot_update/resources/bot_update.py +++ b/recipes/recipe_modules/bot_update/resources/bot_update.py @@ -508,22 +508,25 @@ def get_total_disk_space(): return (total, free) -def get_target_revision(solution_name, git_url, revisions): +def _get_target_branch_and_revision(solution_name, git_url, revisions): normalized_name = solution_name.strip('/') if normalized_name in revisions: - return revisions[normalized_name] - if git_url in revisions: - return revisions[git_url] - return None - + configured = revisions[normalized_name] + elif git_url in revisions: + configured = revisions[git_url] + else: + return 'master', 'HEAD' -def force_revision(cwd, revision): - split_revision = revision.split(':', 1) - branch = 'master' - if len(split_revision) == 2: + parts = configured.split(':', 1) + if len(parts) == 2: # Support for "branch:revision" syntax. - branch, revision = split_revision + return parts + return 'master', configured + +def force_solution_revision(solution_name, git_url, revisions, cwd): + branch, revision = _get_target_branch_and_revision( + solution_name, git_url, revisions) if revision and revision.upper() != 'HEAD': git('checkout', '--force', revision, cwd=cwd) else: @@ -644,11 +647,7 @@ def _git_checkout(sln, build_dir, revisions, shallow, refs, git_cache_dir, except Exception: tries -= 1 - # TODO(tandrii): refactor to avoid exposing revision which isn't really - # sha1 and not even 'HEAD' but can also be 'branch:HEAD' and even - # 'branch:sha1'. - revision = get_target_revision(name, url, revisions) or 'HEAD' - force_revision(sln_dir, revision) + force_solution_revision(name, url, revisions, sln_dir) done = True except SubprocessFailed as e: # Exited abnormally, theres probably something wrong.