| Index: tools/push-to-trunk/push_to_trunk.py
|
| diff --git a/tools/push-to-trunk/push_to_trunk.py b/tools/push-to-trunk/push_to_trunk.py
|
| index 24d9b7730ed2af216bac6db0fc2e6bf88764272f..0dc1a077d282cf4bfe24ac31192b8ceb94df3bde 100755
|
| --- a/tools/push-to-trunk/push_to_trunk.py
|
| +++ b/tools/push-to-trunk/push_to_trunk.py
|
| @@ -98,23 +98,20 @@ class FreshBranch(Step):
|
| MESSAGE = "Create a fresh branch."
|
|
|
| def RunStep(self):
|
| - args = "checkout -b %s svn/bleeding_edge" % self.Config(BRANCHNAME)
|
| - self.Git(args)
|
| + self.GitCreateBranch(self.Config(BRANCHNAME), "svn/bleeding_edge")
|
|
|
|
|
| class DetectLastPush(Step):
|
| MESSAGE = "Detect commit ID of last push to trunk."
|
|
|
| def RunStep(self):
|
| - last_push_trunk = self._options.l or self.FindLastTrunkPush()
|
| + last_push = self._options.l or self.FindLastTrunkPush()
|
| while True:
|
| # Print assumed commit, circumventing git's pager.
|
| - print self.Git("log -1 %s" % last_push_trunk)
|
| + print self.GitLog(n=1, git_hash=last_push)
|
| if self.Confirm("Is the commit printed above the last push to trunk?"):
|
| break
|
| - args = ("log -1 --format=%%H %s^ --grep=\"%s\""
|
| - % (last_push_trunk, push_pattern))
|
| - last_push_trunk = self.Git(args).strip()
|
| + last_push = self.FindLastTrunkPush(parent_hash=last_push)
|
|
|
| if self._options.b:
|
| # Read the bleeding edge revision of the last push from a command-line
|
| @@ -123,21 +120,19 @@ class DetectLastPush(Step):
|
| else:
|
| # Retrieve the bleeding edge revision of the last push from the text in
|
| # the push commit message.
|
| - args = "log -1 --format=%%s %s" % last_push_trunk
|
| - last_push_trunk_title = self.Git(args).strip()
|
| - last_push_be_svn = PUSH_MESSAGE_RE.match(last_push_trunk_title).group(1)
|
| + last_push_title = self.GitLog(n=1, format="%s", git_hash=last_push)
|
| + last_push_be_svn = PUSH_MESSAGE_RE.match(last_push_title).group(1)
|
| if not last_push_be_svn:
|
| self.Die("Could not retrieve bleeding edge revision for trunk push %s"
|
| - % last_push_trunk)
|
| - args = "svn find-rev r%s" % last_push_be_svn
|
| - last_push_bleeding_edge = self.Git(args).strip()
|
| + % last_push)
|
| + last_push_bleeding_edge = self.GitSVNFindGitHash(last_push_be_svn)
|
| if not last_push_bleeding_edge:
|
| self.Die("Could not retrieve bleeding edge git hash for trunk push %s"
|
| - % last_push_trunk)
|
| + % last_push)
|
|
|
| # TODO(machenbach): last_push_trunk points to the svn revision on trunk.
|
| # It is not used yet but we'll need it for retrieving the current version.
|
| - self["last_push_trunk"] = last_push_trunk
|
| + self["last_push_trunk"] = last_push
|
| # TODO(machenbach): This currently points to the prepare push revision that
|
| # will be deprecated soon. After the deprecation it will point to the last
|
| # bleeding_edge revision that went into the last push.
|
| @@ -175,16 +170,15 @@ class PrepareChangeLog(Step):
|
| output = "%s: Version %s\n\n" % (self["date"],
|
| self["version"])
|
| TextToFile(output, self.Config(CHANGELOG_ENTRY_FILE))
|
| -
|
| - args = "log %s..HEAD --format=%%H" % self["last_push_bleeding_edge"]
|
| - commits = self.Git(args).strip()
|
| + commits = self.GitLog(format="%H",
|
| + git_hash="%s..HEAD" % self["last_push_bleeding_edge"])
|
|
|
| # Cache raw commit messages.
|
| commit_messages = [
|
| [
|
| - self.Git("log -1 %s --format=\"%%s\"" % commit),
|
| - self.Reload(self.Git("log -1 %s --format=\"%%B\"" % commit)),
|
| - self.Git("log -1 %s --format=\"%%an\"" % commit),
|
| + self.GitLog(n=1, format="%s", git_hash=commit),
|
| + self.Reload(self.GitLog(n=1, format="%B", git_hash=commit)),
|
| + self.GitLog(n=1, format="%an", git_hash=commit),
|
| ] for commit in commits.splitlines()
|
| ]
|
|
|
| @@ -266,10 +260,11 @@ class CommitLocal(Step):
|
| # Include optional TBR only in the git command. The persisted commit
|
| # message is used for finding the commit again later.
|
| if self._options.tbr_commit:
|
| - review = "\n\nTBR=%s" % self._options.reviewer
|
| + message = "%s\n\nTBR=%s" % (self["prep_commit_msg"],
|
| + self._options.reviewer)
|
| else:
|
| - review = ""
|
| - self.Git("commit -a -m \"%s%s\"" % (self["prep_commit_msg"], review))
|
| + message = "%s" % self["prep_commit_msg"]
|
| + self.GitCommit(message)
|
|
|
|
|
| class CommitRepository(Step):
|
| @@ -282,8 +277,8 @@ class CommitRepository(Step):
|
| TextToFile(GetLastChangeLogEntries(self.Config(CHANGELOG_FILE)),
|
| self.Config(CHANGELOG_ENTRY_FILE))
|
|
|
| - self.Git("cl presubmit", "PRESUBMIT_TREE_CHECK=\"skip\"")
|
| - self.Git("cl dcommit -f --bypass-hooks", retry_on=lambda x: x is None)
|
| + self.GitPresubmit()
|
| + self.GitDCommit()
|
|
|
|
|
| class StragglerCommits(Step):
|
| @@ -291,10 +286,10 @@ class StragglerCommits(Step):
|
| "started.")
|
|
|
| def RunStep(self):
|
| - self.Git("svn fetch")
|
| - self.Git("checkout svn/bleeding_edge")
|
| - args = "log -1 --format=%%H --grep=\"%s\"" % self["prep_commit_msg"]
|
| - self["prepare_commit_hash"] = self.Git(args).strip()
|
| + self.GitSVNFetch()
|
| + self.GitCheckout("svn/bleeding_edge")
|
| + self["prepare_commit_hash"] = self.GitLog(n=1, format="%H",
|
| + grep=self["prep_commit_msg"])
|
|
|
|
|
| class SquashCommits(Step):
|
| @@ -303,8 +298,8 @@ class SquashCommits(Step):
|
| def RunStep(self):
|
| # Instead of relying on "git rebase -i", we'll just create a diff, because
|
| # that's easier to automate.
|
| - args = "diff svn/trunk %s" % self["prepare_commit_hash"]
|
| - TextToFile(self.Git(args), self.Config(PATCH_FILE))
|
| + TextToFile(self.GitDiff("svn/trunk", self["prepare_commit_hash"]),
|
| + self.Config(PATCH_FILE))
|
|
|
| # Convert the ChangeLog entry to commit message format.
|
| text = FileToText(self.Config(CHANGELOG_ENTRY_FILE))
|
| @@ -314,8 +309,7 @@ class SquashCommits(Step):
|
|
|
| # Retrieve svn revision for showing the used bleeding edge revision in the
|
| # commit message.
|
| - args = "svn find-rev %s" % self["prepare_commit_hash"]
|
| - self["svn_revision"] = self.Git(args).strip()
|
| + self["svn_revision"] = self.GitSVNFindSVNRev(self["prepare_commit_hash"])
|
| suffix = PUSH_MESSAGE_SUFFIX % int(self["svn_revision"])
|
| text = MSub(r"^(Version \d+\.\d+\.\d+)$", "\\1%s" % suffix, text)
|
|
|
| @@ -336,7 +330,7 @@ class NewBranch(Step):
|
| MESSAGE = "Create a new branch from trunk."
|
|
|
| def RunStep(self):
|
| - self.Git("checkout -b %s svn/trunk" % self.Config(TRUNKBRANCH))
|
| + self.GitCreateBranch(self.Config(TRUNKBRANCH), "svn/trunk")
|
|
|
|
|
| class ApplyChanges(Step):
|
| @@ -371,8 +365,8 @@ class CommitTrunk(Step):
|
| MESSAGE = "Commit to local trunk branch."
|
|
|
| def RunStep(self):
|
| - self.Git("add \"%s\"" % self.Config(VERSION_FILE))
|
| - self.Git("commit -F \"%s\"" % self.Config(COMMITMSG_FILE))
|
| + self.GitAdd(self.Config(VERSION_FILE))
|
| + self.GitCommit(file_name = self.Config(COMMITMSG_FILE))
|
| Command("rm", "-f %s*" % self.Config(COMMITMSG_FILE))
|
|
|
|
|
| @@ -390,7 +384,7 @@ class CommitSVN(Step):
|
| MESSAGE = "Commit to SVN."
|
|
|
| def RunStep(self):
|
| - result = self.Git("svn dcommit 2>&1", retry_on=lambda x: x is None)
|
| + result = self.GitSVNDCommit()
|
| if not result:
|
| self.Die("'git svn dcommit' failed.")
|
| result = filter(lambda x: re.search(r"^Committed r[0-9]+", x),
|
| @@ -414,9 +408,7 @@ class TagRevision(Step):
|
| MESSAGE = "Tag the new revision."
|
|
|
| def RunStep(self):
|
| - self.Git(("svn tag %s -m \"Tagging version %s\""
|
| - % (self["version"], self["version"])),
|
| - retry_on=lambda x: x is None)
|
| + self.GitSVNTag(self["version"])
|
|
|
|
|
| class CheckChromium(Step):
|
| @@ -443,7 +435,7 @@ class SwitchChromium(Step):
|
| os.chdir(self["chrome_path"])
|
| self.InitialEnvironmentChecks()
|
| # Check for a clean workdir.
|
| - if self.Git("status -s -uno").strip() != "":
|
| + if not self.GitIsWorkdirClean():
|
| self.Die("Workspace is not clean. Please commit or undo your changes.")
|
| # Assert that the DEPS file is there.
|
| if not os.path.exists(self.Config(DEPS_FILE)):
|
| @@ -456,9 +448,9 @@ class UpdateChromiumCheckout(Step):
|
|
|
| def RunStep(self):
|
| os.chdir(self["chrome_path"])
|
| - self.Git("checkout master")
|
| - self.Git("pull")
|
| - self.Git("checkout -b v8-roll-%s" % self["trunk_revision"])
|
| + self.GitCheckout("master")
|
| + self.GitPull()
|
| + self.GitCreateBranch("v8-roll-%s" % self["trunk_revision"])
|
|
|
|
|
| class UploadCL(Step):
|
| @@ -482,13 +474,11 @@ class UploadCL(Step):
|
| print "Please enter the email address of a reviewer for the roll CL: ",
|
| self.DieNoManualMode("A reviewer must be specified in forced mode.")
|
| rev = self.ReadLine()
|
| - self.Git("commit -am \"Update V8 to version %s "
|
| - "(based on bleeding_edge revision r%s).\n\nTBR=%s\""
|
| - % (self["version"], self["svn_revision"], rev))
|
| - author_option = self._options.author
|
| - author = " --email \"%s\"" % author_option if author_option else ""
|
| - force_flag = " -f" if self._options.force_upload else ""
|
| - self.Git("cl upload%s --send-mail%s" % (author, force_flag), pipe=False)
|
| + suffix = PUSH_MESSAGE_SUFFIX % int(self["svn_revision"])
|
| + self.GitCommit("Update V8 to version %s%s.\n\nTBR=%s"
|
| + % (self["version"], suffix, rev))
|
| + self.GitUpload(author=self._options.author,
|
| + force=self._options.force_upload)
|
| print "CL uploaded."
|
|
|
|
|
| @@ -518,7 +508,7 @@ class CleanUp(Step):
|
|
|
| self.CommonCleanup()
|
| if self.Config(TRUNKBRANCH) != self["current_branch"]:
|
| - self.Git("branch -D %s" % self.Config(TRUNKBRANCH))
|
| + self.GitDeleteBranch(self.Config(TRUNKBRANCH))
|
|
|
|
|
| def RunPushToTrunk(config,
|
|
|