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

Unified Diff: drover.py

Issue 294005: gcl: Make fix the override_description code and add a silent flag.... (Closed) Base URL: svn://chrome-svn.corp.google.com/chrome/trunk/tools/depot_tools/
Patch Set: '' Created 11 years, 2 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 | gcl.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: drover.py
===================================================================
--- drover.py (revision 29312)
+++ drover.py (working copy)
@@ -18,21 +18,16 @@
Valid parameters:
[Merge from trunk to branch]
-<revision> --merge <branch_num>
-Example: %(app)s 12345 --merge 187
+--merge <revision> --branch <branch_num>
+Example: %(app)s --merge 12345 --branch 187
-[Merge from trunk to branch, ignoring revision history]
-<revision> --mplus <branch_num>
-Example: %(app)s 12345 --mplus 187
-
[Revert from trunk]
-<revision> --revert
-Example: %(app)s 12345 --revert
+--revert <revision>
+Example: %(app)s --revert 12345
-
[Revert from branch]
-<revision> --revert <branch_num>
-Example: %(app)s 12345 --revert 187
+--revert <revision> --branch <branch_num>
+Example: %(app)s --revert 12345 --branch 187
"""
export_map_ = None
@@ -249,7 +244,7 @@
match.group(3).strip(),match.group(4).strip()])
files_info_ = info
- return rtn
+ return info
def getBestMergePaths(url, revision):
"""Takes an svn url and gets the associated revision."""
@@ -329,7 +324,7 @@
def prompt(question):
answer = None
- while not p:
+ while not answer:
print question + " [y|n]:"
answer = sys.stdin.readline()
if answer.lower().startswith('n'):
@@ -346,7 +341,7 @@
return default
return answer
-def main(argv=None):
+def main(options, args):
BASE_URL = "svn://chrome-svn/chrome"
TRUNK_URL = BASE_URL + "/trunk/src"
BRANCH_URL = BASE_URL + "/branches/$branch/src"
@@ -363,60 +358,50 @@
if FILE_PATTERN:
file_pattern_ = FILE_PATTERN
- if (len(sys.argv) == 1):
- print USAGE % {"app": sys.argv[0]}
- sys.exit(0)
+ revision = options.revert or options.merge
- revision = int(sys.argv[1])
- if ((len(sys.argv) >= 4) and (sys.argv[2] in ['--revert','-r'])):
- url = BRANCH_URL.replace("$branch", sys.argv[3])
+ if options.revert and options.branch:
+ url = BRANCH_URL.replace("$branch", options.branch)
else:
url = TRUNK_URL
- action = "Merge"
working = DEFAULT_WORKING
command = 'svn log ' + url + " -r "+str(revision) + " -v"
os.system(command)
- if not prompt("Is this the correct revision?"):
+ if not (options.revertbot or prompt("Is this the correct revision?")):
sys.exit(0)
if (os.path.exists(working)):
- if not (SKIP_CHECK_WORKING or prompt("Working directory: '" + working + "' already exists, clobber?")):
+ if not (options.revertbot or SKIP_CHECK_WORKING or
+ prompt("Working directory: '%s' already exists, clobber?" % working)):
sys.exit(0)
deltree(working)
os.makedirs(working)
os.chdir(working)
- if (len(sys.argv) > 1):
- if sys.argv[2] in ['--merge','-m']:
- if (len(sys.argv) != 4):
- print "Please specify the branch # you want (i.e. 182) after --merge"
- sys.exit(0)
+ if options.merge:
+ action = "Merge"
+ branch_url = BRANCH_URL.replace("$branch", options.branch)
+ # Checkout everything but stuff that got added into a new dir
+ checkoutRevision(url, revision, branch_url)
+ # Merge everything that changed
+ mergeRevision(url, revision)
+ # "Export" files that were added from the source and add them to branch
+ exportRevision(url, revision)
+ # Delete directories that were deleted (file deletes are handled in the
+ # merge).
+ deleteRevision(url, revision)
+ elif options.revert:
+ action = "Revert"
+ if options.branch:
+ url = BRANCH_URL.replace("$branch", options.branch)
+ checkoutRevision(url, revision, url, True)
+ revertRevision(url, revision)
+ revertExportRevision(url, revision)
- branch_url = BRANCH_URL.replace("$branch", sys.argv[3])
- # Checkout everything but stuff that got added into a new dir
- checkoutRevision(url, revision, branch_url)
- # Merge everything that changed
- mergeRevision(url, revision)
- # "Export" files that were added from the source and add them to branch
- exportRevision(url, revision)
- # Delete directories that were deleted (file deletes are handled in the
- # merge).
- deleteRevision(url, revision)
- elif sys.argv[2] in ['--revert','-r']:
- if (len(sys.argv) == 4):
- url = BRANCH_URL.replace("$branch", sys.argv[3])
- checkoutRevision(url, revision, url, True)
- revertRevision(url, revision)
- revertExportRevision(url, revision)
- action = "Revert"
- else:
- print "Unknown parameter " + sys.argv[2]
- sys.exit(0)
-
# Check the base url so we actually find the author who made the change
author = getAuthor(TRUNK_URL, revision)
@@ -428,28 +413,60 @@
out.write("TBR=" + author)
out.close()
- os.system('gcl change ' + str(revision) + " " + filename)
+ change_cmd = 'gcl change ' + str(revision) + " " + filename
+ if options.revertbot:
+ change_cmd += ' --silent'
+ os.system(change_cmd)
os.unlink(filename)
print author
print revision
print ("gcl upload " + str(revision) +
" --send_mail --no_try --no_presubmit --reviewers=" + author)
- print "gcl commit " + str(revision) + " --no_presubmit --force"
- print "gcl delete " + str(revision)
- if prompt("Would you like to upload?"):
+ if options.revertbot or prompt("Would you like to upload?"):
if PROMPT_FOR_AUTHOR:
- author = text_prompt("Enter a new author or press enter to accept default", author)
+ author = text_prompt("Enter new author or press enter to accept default",
+ author)
+ if options.revertbot and options.revertbot_reviewers:
+ author += ","
+ author += options.revertbot_reviewers
gclUpload(revision, author)
else:
print "Deleting the changelist."
+ print "gcl delete " + str(revision)
os.system("gcl delete " + str(revision))
sys.exit(0)
- if prompt("Would you like to commit?"):
+ # We commit if the reverbot is set to commit automatically, or if this is
+ # not the revertbot and the user agrees.
+ if options.revertbot_commit or (not options.revertbot and
+ prompt("Would you like to commit?")):
+ print "gcl commit " + str(revision) + " --no_presubmit --force"
os.system("gcl commit " + str(revision) + " --no_presubmit --force")
else:
sys.exit(0)
if __name__ == "__main__":
- sys.exit(main())
+ option_parser = optparse.OptionParser(usage=USAGE % {"app": sys.argv[0]})
+ option_parser.add_option('-m', '--merge', type="int",
+ help='Revision to merge from trunk to branch')
+ option_parser.add_option('-b', '--branch',
+ help='Branch to revert or merge from')
+ option_parser.add_option('-r', '--revert', type="int",
+ help='Revision to revert')
+ option_parser.add_option('', '--revertbot', action='store_true',
+ default=False)
+ option_parser.add_option('', '--revertbot-commit', action='store_true',
+ default=False)
+ option_parser.add_option('', '--revertbot-reviewers')
+ options, args = option_parser.parse_args()
+
+ if not options.merge and not options.revert:
+ option_parser.error("You need at least --merge or --revert")
+ sys.exit(1)
+
+ if options.merge and not options.branch:
+ option_parser.error("--merge requires a --branch")
+ sys.exit(1)
+
+ sys.exit(main(options, args))
« no previous file with comments | « no previous file | gcl.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698