| 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 fe4561016abcd8f5bf9d2c2d0c7ae372ccea4b4a..9d17a455315042de22fff6c25bcaf03241429507 100755
 | 
| --- a/tools/push-to-trunk/push_to_trunk.py
 | 
| +++ b/tools/push-to-trunk/push_to_trunk.py
 | 
| @@ -110,6 +110,43 @@ class DetectLastPush(Step):
 | 
|      self["last_push_bleeding_edge"] = last_push_bleeding_edge
 | 
|  
 | 
|  
 | 
| +class IncrementVersion(Step):
 | 
| +  MESSAGE = "Increment version number."
 | 
| +
 | 
| +  def RunStep(self):
 | 
| +    # Retrieve current version from last trunk push.
 | 
| +    self.GitCheckoutFile(self.Config(VERSION_FILE), self["last_push_trunk"])
 | 
| +    self.ReadAndPersistVersion()
 | 
| +
 | 
| +    if self.Confirm(("Automatically increment BUILD_NUMBER? (Saying 'n' will "
 | 
| +                     "fire up your EDITOR on %s so you can make arbitrary "
 | 
| +                     "changes. When you're done, save the file and exit your "
 | 
| +                     "EDITOR.)" % self.Config(VERSION_FILE))):
 | 
| +      text = FileToText(self.Config(VERSION_FILE))
 | 
| +      text = MSub(r"(?<=#define BUILD_NUMBER)(?P<space>\s+)\d*$",
 | 
| +                  r"\g<space>%s" % str(int(self["build"]) + 1),
 | 
| +                  text)
 | 
| +      TextToFile(text, self.Config(VERSION_FILE))
 | 
| +    else:
 | 
| +      self.Editor(self.Config(VERSION_FILE))
 | 
| +
 | 
| +    # Variables prefixed with 'new_' contain the new version numbers for the
 | 
| +    # ongoing trunk push.
 | 
| +    self.ReadAndPersistVersion("new_")
 | 
| +    self["version"] = "%s.%s.%s" % (self["new_major"],
 | 
| +                                    self["new_minor"],
 | 
| +                                    self["new_build"])
 | 
| +
 | 
| +    # TODO(machenbach): The following will be deprecated. Increment version
 | 
| +    # numbers for version.cc on bleeding_edge (new build level on trunk + 1).
 | 
| +    text = FileToText(self.Config(VERSION_FILE))
 | 
| +    text = MSub(r"(?<=#define BUILD_NUMBER)(?P<space>\s+)\d*$",
 | 
| +                r"\g<space>%s" % str(int(self["new_build"]) + 1),
 | 
| +                text)
 | 
| +    TextToFile(text, self.Config(VERSION_FILE))
 | 
| +    self.ReadAndPersistVersion("new_be_")
 | 
| +
 | 
| +
 | 
|  class PrepareChangeLog(Step):
 | 
|    MESSAGE = "Prepare raw ChangeLog entry."
 | 
|  
 | 
| @@ -132,14 +169,8 @@ class PrepareChangeLog(Step):
 | 
|      return body
 | 
|  
 | 
|    def RunStep(self):
 | 
| -    # These version numbers are used again later for the trunk commit.
 | 
| -    self.ReadAndPersistVersion()
 | 
|      self["date"] = self.GetDate()
 | 
| -    self["version"] = "%s.%s.%s" % (self["major"],
 | 
| -                                    self["minor"],
 | 
| -                                    self["build"])
 | 
| -    output = "%s: Version %s\n\n" % (self["date"],
 | 
| -                                     self["version"])
 | 
| +    output = "%s: Version %s\n\n" % (self["date"], self["version"])
 | 
|      TextToFile(output, self.Config(CHANGELOG_ENTRY_FILE))
 | 
|      commits = self.GitLog(format="%H",
 | 
|          git_hash="%s..HEAD" % self["last_push_bleeding_edge"])
 | 
| @@ -191,35 +222,14 @@ class EditChangeLog(Step):
 | 
|      TextToFile(changelog_entry, self.Config(CHANGELOG_ENTRY_FILE))
 | 
|  
 | 
|  
 | 
| -class IncrementVersion(Step):
 | 
| -  MESSAGE = "Increment version number."
 | 
| -
 | 
| -  def RunStep(self):
 | 
| -    new_build = str(int(self["build"]) + 1)
 | 
| -
 | 
| -    if self.Confirm(("Automatically increment BUILD_NUMBER? (Saying 'n' will "
 | 
| -                     "fire up your EDITOR on %s so you can make arbitrary "
 | 
| -                     "changes. When you're done, save the file and exit your "
 | 
| -                     "EDITOR.)" % self.Config(VERSION_FILE))):
 | 
| -      text = FileToText(self.Config(VERSION_FILE))
 | 
| -      text = MSub(r"(?<=#define BUILD_NUMBER)(?P<space>\s+)\d*$",
 | 
| -                  r"\g<space>%s" % new_build,
 | 
| -                  text)
 | 
| -      TextToFile(text, self.Config(VERSION_FILE))
 | 
| -    else:
 | 
| -      self.Editor(self.Config(VERSION_FILE))
 | 
| -
 | 
| -    self.ReadAndPersistVersion("new_")
 | 
| -
 | 
| -
 | 
|  class CommitLocal(Step):
 | 
|    MESSAGE = "Commit to local branch."
 | 
|  
 | 
|    def RunStep(self):
 | 
|      self["prep_commit_msg"] = ("Prepare push to trunk.  "
 | 
| -        "Now working on version %s.%s.%s." % (self["new_major"],
 | 
| -                                              self["new_minor"],
 | 
| -                                              self["new_build"]))
 | 
| +        "Now working on version %s.%s.%s." % (self["new_be_major"],
 | 
| +                                              self["new_be_minor"],
 | 
| +                                              self["new_be_build"]))
 | 
|  
 | 
|      # Include optional TBR only in the git command. The persisted commit
 | 
|      # message is used for finding the commit again later.
 | 
| @@ -329,11 +339,11 @@ class SetVersion(Step):
 | 
|      output = ""
 | 
|      for line in FileToText(self.Config(VERSION_FILE)).splitlines():
 | 
|        if line.startswith("#define MAJOR_VERSION"):
 | 
| -        line = re.sub("\d+$", self["major"], line)
 | 
| +        line = re.sub("\d+$", self["new_major"], line)
 | 
|        elif line.startswith("#define MINOR_VERSION"):
 | 
| -        line = re.sub("\d+$", self["minor"], line)
 | 
| +        line = re.sub("\d+$", self["new_minor"], line)
 | 
|        elif line.startswith("#define BUILD_NUMBER"):
 | 
| -        line = re.sub("\d+$", self["build"], line)
 | 
| +        line = re.sub("\d+$", self["new_build"], line)
 | 
|        elif line.startswith("#define PATCH_LEVEL"):
 | 
|          line = re.sub("\d+$", "0", line)
 | 
|        elif line.startswith("#define IS_CANDIDATE_VERSION"):
 | 
| @@ -529,9 +539,9 @@ class PushToTrunk(ScriptsBase):
 | 
|        Preparation,
 | 
|        FreshBranch,
 | 
|        DetectLastPush,
 | 
| +      IncrementVersion,
 | 
|        PrepareChangeLog,
 | 
|        EditChangeLog,
 | 
| -      IncrementVersion,
 | 
|        CommitLocal,
 | 
|        UploadStep,
 | 
|        CommitRepository,
 | 
| 
 |