Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(431)

Unified Diff: git_cl.py

Issue 543463002: Add a --tbr-owners option to git cl upload (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: git_cl.py
diff --git a/git_cl.py b/git_cl.py
index 65524207863dc006b2375af2c1b72d3829abd39d..b8263b5503c00a9f5371c133f8f13eea2dc28339 100755
--- a/git_cl.py
+++ b/git_cl.py
@@ -36,6 +36,7 @@ import clang_format
import fix_encoding
import gclient_utils
import git_common
+import owners
import owners_finder
import presubmit_support
import rietveld
@@ -959,10 +960,10 @@ class ChangeDescription(object):
lines.pop(-1)
self._description_lines = lines
- def update_reviewers(self, reviewers):
+ def update_reviewers(self, reviewers, add_owners_tbr=False, change=None):
"""Rewrites the R=/TBR= line(s) as a single line each."""
assert isinstance(reviewers, list), reviewers
- if not reviewers:
+ if not reviewers and not add_owners_tbr:
return
reviewers = reviewers[:]
@@ -987,6 +988,14 @@ class ChangeDescription(object):
for name in r_names:
if name not in reviewers:
reviewers.append(name)
+ if add_owners_tbr:
+ owners_db = owners.Database(change.RepositoryRoot(),
+ fopen=file, os_path=os.path, glob=glob.glob)
+ all_reviewers = set(tbr_names + reviewers)
+ missing_files = owners_db.files_not_covered_by(change.LocalPaths(),
+ all_reviewers)
+ tbr_names.extend(owners_db.reviewers_for(missing_files,
+ change.author_email))
new_r_line = 'R=' + ', '.join(reviewers) if reviewers else None
new_tbr_line = 'TBR=' + ', '.join(tbr_names) if tbr_names else None
@@ -1525,7 +1534,7 @@ def AddChangeIdToCommitMessage(options, args):
print >> sys.stderr, 'ERROR: Gerrit commit-msg hook not available.'
-def GerritUpload(options, args, cl):
+def GerritUpload(options, args, cl, change):
"""upload the current branch to gerrit."""
# We assume the remote called "origin" is the one we want.
# It is probably not worthwhile to support different workflows.
@@ -1551,8 +1560,8 @@ def GerritUpload(options, args, cl):
'commit.')
ask_for_data('About to upload; enter to confirm.')
- if options.reviewers:
- change_desc.update_reviewers(options.reviewers)
+ if options.reviewers or options.tbr_owners:
+ change_desc.update_reviewers(options.reviewers, options.tbr_owners, change)
receive_options = []
cc = cl.GetCCList().split(',')
@@ -1575,7 +1584,7 @@ def GerritUpload(options, args, cl):
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()])
@@ -1600,8 +1609,10 @@ def RietveldUpload(options, args, cl):
upload_args.extend(['--title', options.title])
message = options.title or options.message or CreateDescriptionFromLog(args)
change_desc = ChangeDescription(message)
- if options.reviewers:
- change_desc.update_reviewers(options.reviewers)
+ if options.reviewers or options.tbr_owners:
+ change_desc.update_reviewers(options.reviewers,
+ options.tbr_owners,
+ change)
if not options.force:
change_desc.prompt()
@@ -1735,6 +1746,8 @@ def CMDupload(parser, args):
'use for CL. Default: master')
parser.add_option('--email', default=None,
help='email address to use to connect to Rietveld')
+ parser.add_option('--tbr-owners', dest='tbr_owners', action='store_true',
+ help='add a set of OWNERS to TBR')
add_git_similarity(parser)
(options, args) = parser.parse_args(args)
@@ -1765,10 +1778,12 @@ def CMDupload(parser, args):
cl.SetWatchers(watchlist.GetWatchersForPaths(files))
if not options.bypass_hooks:
- if options.reviewers:
+ if options.reviewers or options.tbr_owners:
# Set the reviewer list now so that presubmit checks can access it.
change_description = ChangeDescription(change.FullDescriptionText())
- change_description.update_reviewers(options.reviewers)
+ change_description.update_reviewers(options.reviewers,
+ options.tbr_owners,
+ change)
change.SetDescriptionText(change_description.description)
hook_results = cl.RunHook(committing=False,
may_prompt=not options.force,
@@ -1793,8 +1808,8 @@ def CMDupload(parser, args):
print_stats(options.similarity, options.find_copies, args)
if settings.GetIsGerrit():
- return GerritUpload(options, args, cl)
- ret = RietveldUpload(options, args, cl)
+ return GerritUpload(options, args, cl, change)
+ ret = RietveldUpload(options, args, cl, change)
if not ret:
git_set_branch_value('last-upload-hash',
RunGit(['rev-parse', 'HEAD']).strip())
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698