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

Unified Diff: tools/push-to-trunk/common_includes.py

Issue 607893004: Add tag write access to merge script. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Make use of remote branch knowledge. 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 | tools/push-to-trunk/git_recipes.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/push-to-trunk/common_includes.py
diff --git a/tools/push-to-trunk/common_includes.py b/tools/push-to-trunk/common_includes.py
index f015601a070b652b816dfe5e9e0f6814306a0cc6..b8d1620dbda0cf9868dd47ada80e78add574ab83 100644
--- a/tools/push-to-trunk/common_includes.py
+++ b/tools/push-to-trunk/common_includes.py
@@ -296,6 +296,10 @@ class VCInterface(object):
# tag and commit are different remote commands, while in git we would commit
# and tag locally and then push/land in one unique step.
def Tag(self, tag, remote):
+ """Sets a tag for the current commit.
+
+ Assumptions: The commit already landed and the commit message is unique.
+ """
raise NotImplementedError()
@@ -348,7 +352,7 @@ class GitSvnInterface(VCInterface):
self.step.GitSVNTag(tag)
-class GitReadOnlyMixin(VCInterface):
+class GitTagsOnlyMixin(VCInterface):
def Pull(self):
self.step.GitPull()
@@ -377,8 +381,33 @@ class GitReadOnlyMixin(VCInterface):
return "origin/%s" % name
return "origin/branch-heads/%s" % name
-
-class GitReadSvnWriteInterface(GitReadOnlyMixin, GitSvnInterface):
+ def Tag(self, tag, remote):
+ # Title of the current commit (the local title and the title for committing
+ # is the same in all merge and push scripts).
+ title = self.step.GitLog(n=1, format="%s")
+
+ # Wait for the commit to appear. Assumes unique commit message titles (this
+ # is the case for all automated merge and push commits - also no title is
+ # the prefix of another title).
+ commit = None
+ for wait_interval in [3, 5, 10, 30]:
tandrii(chromium) 2014/10/02 17:36:06 not sure 48 seconds is enough, you probably know b
Michael Achenbach 2014/10/07 10:10:50 Bumped it a little.
+ self.step.Git("fetch")
+ commit = self.step.GitLog(n=1, format="%H", grep=title, branch=remote)
+ if commit:
tandrii(chromium) 2014/10/02 17:36:06 Naturally, i'm not sure about assumption above the
Michael Achenbach 2014/10/07 10:10:50 I don't need the assumption if I add the commit me
+ break
+ print("The commit has not replicated to git. Waiting for %s seconds." %
+ wait_interval)
+ self.step._side_effect_handler.Sleep(wait_interval)
+
+ if not commit:
tandrii(chromium) 2014/10/02 17:36:06 or just else:
Michael Achenbach 2014/10/07 10:10:50 Odd construct - but I love shorter code :)
+ self.step.Die("Couldn't determine commit for setting the tag. Maybe the "
+ "git updater is lagging behind?")
+
+ self.step.Git("tag %s %s" % (tag, commit))
+ self.step.Git("push origin %s" % tag)
+
+
+class GitReadSvnWriteInterface(GitTagsOnlyMixin, GitSvnInterface):
pass
« no previous file with comments | « no previous file | tools/push-to-trunk/git_recipes.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698