Added support for git cl upload automatic trybot determination.
This is part of my intern project, which is detailed here:
"https://docs.google.com/a/google.com/document/d/10bkzag1UUbtESPkEWHYaZtGMEEbCN5Zad72PuoRpwZE/edit#"
The idea is to have "git cl upload" annotate the CL description with a
flag like "CQ_TRYBOTS=...", which CQ will then look at to determine which
trybots to run the the given CL.
The CL for the change for CQ is at "https://chromereviews.googleplex.com/51757013/".
R=dpranke@google.com, iannucci@google.com
BUG=378097
Review URL: https://codereview.chromium.org/348473003
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@280039 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/git_cl.py b/git_cl.py
index f86a781..72770a1 100755
--- a/git_cl.py
+++ b/git_cl.py
@@ -1552,7 +1552,7 @@
return 0
-def RietveldUpload(options, args, cl):
+def RietveldUpload(options, args, cl, change):
"""upload the patch to rietveld."""
upload_args = ['--assume_yes'] # Don't ask about untracked files.
upload_args.extend(['--server', cl.GetRietveldServer()])
@@ -1579,6 +1579,22 @@
change_desc = ChangeDescription(message)
if options.reviewers:
change_desc.update_reviewers(options.reviewers)
+ if options.auto_bots:
+ masters = presubmit_support.DoGetTryMasters(
+ change,
+ change.LocalPaths(),
+ settings.GetRoot(),
+ None,
+ None,
+ options.verbose,
+ sys.stdout)
+
+ if masters:
+ change_description = change_desc.description + '\nCQ_TRYBOTS='
+ lst = []
+ for master, mapping in masters.iteritems():
+ lst.append(master + ':' + ','.join(mapping.keys()))
+ change_desc.set_description(change_description + ';'.join(lst))
if not options.force:
change_desc.prompt()
@@ -1709,6 +1725,8 @@
'use for CL. Default: master')
parser.add_option('--email', default=None,
help='email address to use to connect to Rietveld')
+ parser.add_option('--auto-bots', default=False, action='store_true',
+ help='Autogenerate which trybots to use for this CL')
add_git_similarity(parser)
(options, args) = parser.parse_args(args)
@@ -1768,7 +1786,7 @@
print_stats(options.similarity, options.find_copies, args)
if settings.GetIsGerrit():
return GerritUpload(options, args, cl)
- ret = RietveldUpload(options, args, cl)
+ ret = RietveldUpload(options, args, cl, change)
if not ret:
git_set_branch_value('last-upload-hash',
RunGit(['rev-parse', 'HEAD']).strip())