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

Side by Side Diff: tools/push-to-trunk/push_to_trunk.py

Issue 144463003: Let push-to-trunk script retry failing svn writes. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 11 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2013 the V8 project authors. All rights reserved. 2 # Copyright 2013 the V8 project authors. All rights reserved.
3 # Redistribution and use in source and binary forms, with or without 3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are 4 # modification, are permitted provided that the following conditions are
5 # met: 5 # met:
6 # 6 #
7 # * Redistributions of source code must retain the above copyright 7 # * Redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer. 8 # notice, this list of conditions and the following disclaimer.
9 # * Redistributions in binary form must reproduce the above 9 # * Redistributions in binary form must reproduce the above
10 # copyright notice, this list of conditions and the following 10 # copyright notice, this list of conditions and the following
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 def RunStep(self): 249 def RunStep(self):
250 self.WaitForLGTM() 250 self.WaitForLGTM()
251 # Re-read the ChangeLog entry (to pick up possible changes). 251 # Re-read the ChangeLog entry (to pick up possible changes).
252 # FIXME(machenbach): This was hanging once with a broken pipe. 252 # FIXME(machenbach): This was hanging once with a broken pipe.
253 TextToFile(GetLastChangeLogEntries(self.Config(CHANGELOG_FILE)), 253 TextToFile(GetLastChangeLogEntries(self.Config(CHANGELOG_FILE)),
254 self.Config(CHANGELOG_ENTRY_FILE)) 254 self.Config(CHANGELOG_ENTRY_FILE))
255 255
256 if self.Git("cl presubmit", "PRESUBMIT_TREE_CHECK=\"skip\"") is None: 256 if self.Git("cl presubmit", "PRESUBMIT_TREE_CHECK=\"skip\"") is None:
257 self.Die("'git cl presubmit' failed, please try again.") 257 self.Die("'git cl presubmit' failed, please try again.")
258 258
259 if self.Git("cl dcommit -f --bypass-hooks") is None: 259 if self.Git("cl dcommit -f --bypass-hooks",
260 retry_on=lambda x: x is None) is None:
260 self.Die("'git cl dcommit' failed, please try again.") 261 self.Die("'git cl dcommit' failed, please try again.")
261 262
262 263
263 class StragglerCommits(Step): 264 class StragglerCommits(Step):
264 MESSAGE = ("Fetch straggler commits that sneaked in since this script was " 265 MESSAGE = ("Fetch straggler commits that sneaked in since this script was "
265 "started.") 266 "started.")
266 267
267 def RunStep(self): 268 def RunStep(self):
268 if self.Git("svn fetch") is None: 269 if self.Git("svn fetch") is None:
269 self.Die("'git svn fetch' failed.") 270 self.Die("'git svn fetch' failed.")
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 if not self.Confirm("Please check if your local checkout is sane: Inspect " 360 if not self.Confirm("Please check if your local checkout is sane: Inspect "
360 "%s, compile, run tests. Do you want to commit this new trunk " 361 "%s, compile, run tests. Do you want to commit this new trunk "
361 "revision to the repository?" % self.Config(VERSION_FILE)): 362 "revision to the repository?" % self.Config(VERSION_FILE)):
362 self.Die("Execution canceled.") 363 self.Die("Execution canceled.")
363 364
364 365
365 class CommitSVN(Step): 366 class CommitSVN(Step):
366 MESSAGE = "Commit to SVN." 367 MESSAGE = "Commit to SVN."
367 368
368 def RunStep(self): 369 def RunStep(self):
369 result = self.Git("svn dcommit 2>&1") 370 result = self.Git("svn dcommit 2>&1", retry_on=lambda x: x is None)
370 if not result: 371 if not result:
371 self.Die("'git svn dcommit' failed.") 372 self.Die("'git svn dcommit' failed.")
372 result = filter(lambda x: re.search(r"^Committed r[0-9]+", x), 373 result = filter(lambda x: re.search(r"^Committed r[0-9]+", x),
373 result.splitlines()) 374 result.splitlines())
374 if len(result) > 0: 375 if len(result) > 0:
375 trunk_revision = re.sub(r"^Committed r([0-9]+)", r"\1", result[0]) 376 trunk_revision = re.sub(r"^Committed r([0-9]+)", r"\1", result[0])
376 377
377 # Sometimes grepping for the revision fails. No idea why. If you figure 378 # Sometimes grepping for the revision fails. No idea why. If you figure
378 # out why it is flaky, please do fix it properly. 379 # out why it is flaky, please do fix it properly.
379 if not trunk_revision: 380 if not trunk_revision:
380 print("Sorry, grepping for the SVN revision failed. Please look for it " 381 print("Sorry, grepping for the SVN revision failed. Please look for it "
381 "in the last command's output above and provide it manually (just " 382 "in the last command's output above and provide it manually (just "
382 "the number, without the leading \"r\").") 383 "the number, without the leading \"r\").")
383 self.DieNoManualMode("Can't prompt in forced mode.") 384 self.DieNoManualMode("Can't prompt in forced mode.")
384 while not trunk_revision: 385 while not trunk_revision:
385 print "> ", 386 print "> ",
386 trunk_revision = self.ReadLine() 387 trunk_revision = self.ReadLine()
387 self.Persist("trunk_revision", trunk_revision) 388 self.Persist("trunk_revision", trunk_revision)
388 389
389 390
390 class TagRevision(Step): 391 class TagRevision(Step):
391 MESSAGE = "Tag the new revision." 392 MESSAGE = "Tag the new revision."
392 393
393 def RunStep(self): 394 def RunStep(self):
394 self.RestoreVersionIfUnset() 395 self.RestoreVersionIfUnset()
395 ver = "%s.%s.%s" % (self._state["major"], 396 ver = "%s.%s.%s" % (self._state["major"],
396 self._state["minor"], 397 self._state["minor"],
397 self._state["build"]) 398 self._state["build"])
398 if self.Git("svn tag %s -m \"Tagging version %s\"" % (ver, ver)) is None: 399 if self.Git("svn tag %s -m \"Tagging version %s\"" % (ver, ver),
400 retry_on=lambda x: x is None) is None:
399 self.Die("'git svn tag' failed.") 401 self.Die("'git svn tag' failed.")
400 402
401 403
402 class CheckChromium(Step): 404 class CheckChromium(Step):
403 MESSAGE = "Ask for chromium checkout." 405 MESSAGE = "Ask for chromium checkout."
404 406
405 def Run(self): 407 def Run(self):
406 chrome_path = self._options.c 408 chrome_path = self._options.c
407 if not chrome_path: 409 if not chrome_path:
408 self.DieNoManualMode("Please specify the path to a Chromium checkout in " 410 self.DieNoManualMode("Please specify the path to a Chromium checkout in "
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 def Main(): 595 def Main():
594 parser = BuildOptions() 596 parser = BuildOptions()
595 (options, args) = parser.parse_args() 597 (options, args) = parser.parse_args()
596 if not ProcessOptions(options): 598 if not ProcessOptions(options):
597 parser.print_help() 599 parser.print_help()
598 return 1 600 return 1
599 RunPushToTrunk(CONFIG, PushToTrunkOptions(options)) 601 RunPushToTrunk(CONFIG, PushToTrunkOptions(options))
600 602
601 if __name__ == "__main__": 603 if __name__ == "__main__":
602 sys.exit(Main()) 604 sys.exit(Main())
OLDNEW
« 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