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

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

Issue 78683002: Let ChangeLog get auto-generated in push-to-trunk script. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Review Created 7 years, 1 month 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 | « tools/push-to-trunk/common_includes.py ('k') | tools/push-to-trunk/test_scripts.py » ('j') | 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 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 self.Persist("date", date) 105 self.Persist("date", date)
106 output = "%s: Version %s.%s.%s\n\n" % (date, 106 output = "%s: Version %s.%s.%s\n\n" % (date,
107 self._state["major"], 107 self._state["major"],
108 self._state["minor"], 108 self._state["minor"],
109 self._state["build"]) 109 self._state["build"])
110 TextToFile(output, self.Config(CHANGELOG_ENTRY_FILE)) 110 TextToFile(output, self.Config(CHANGELOG_ENTRY_FILE))
111 111
112 args = "log %s..HEAD --format=%%H" % self._state["last_push"] 112 args = "log %s..HEAD --format=%%H" % self._state["last_push"]
113 commits = self.Git(args).strip() 113 commits = self.Git(args).strip()
114 114
115 def GetCommitMessages(): 115 # Cache raw commit messages.
116 for commit in commits.splitlines(): 116 commit_messages = [
117 yield [ 117 [
118 self.Git("log -1 %s --format=\"%%w(80,8,8)%%s\"" % commit), 118 self.Git("log -1 %s --format=\"%%w(80,8,8)%%s\"" % commit),
119 self.Git("log -1 %s --format=\"%%B\"" % commit), 119 self.Git("log -1 %s --format=\"%%B\"" % commit),
120 self.Git("log -1 %s --format=\"%%w(80,8,8)(%%an)\"" % commit), 120 self.Git("log -1 %s --format=\"%%w(80,8,8)(%%an)\"" % commit),
121 ] 121 ] for commit in commits.splitlines()
122 ]
122 123
123 body = MakeChangeLogBody(GetCommitMessages) 124 # Auto-format commit messages.
125 body = MakeChangeLogBody(commit_messages, auto_format=True)
124 AppendToFile(body, self.Config(CHANGELOG_ENTRY_FILE)) 126 AppendToFile(body, self.Config(CHANGELOG_ENTRY_FILE))
125 127
126 msg = " Performance and stability improvements on all platforms.\n" 128 msg = (" Performance and stability improvements on all platforms."
129 "\n#\n# The change log above is auto-generated. Please review if "
130 "all relevant\n# commit messages from the list below are included."
131 "\n# All lines starting with # will be stripped.\n#\n")
127 AppendToFile(msg, self.Config(CHANGELOG_ENTRY_FILE)) 132 AppendToFile(msg, self.Config(CHANGELOG_ENTRY_FILE))
128 133
134 # Include unformatted commit messages as a reference in a comment.
135 comment_body = MakeComment(MakeChangeLogBody(commit_messages))
136 AppendToFile(comment_body, self.Config(CHANGELOG_ENTRY_FILE))
137
129 138
130 class EditChangeLog(Step): 139 class EditChangeLog(Step):
131 def __init__(self): 140 def __init__(self):
132 Step.__init__(self, "Edit ChangeLog entry.") 141 Step.__init__(self, "Edit ChangeLog entry.")
133 142
134 def RunStep(self): 143 def RunStep(self):
135 print ("Please press <Return> to have your EDITOR open the ChangeLog " 144 print ("Please press <Return> to have your EDITOR open the ChangeLog "
136 "entry, then edit its contents to your liking. When you're done, " 145 "entry, then edit its contents to your liking. When you're done, "
137 "save the file and exit your EDITOR. ") 146 "save the file and exit your EDITOR. ")
138 self.ReadLine(default="") 147 self.ReadLine(default="")
139 148
140 # TODO(machenbach): Don't use EDITOR in forced mode as soon as script is 149 # TODO(machenbach): Don't use EDITOR in forced mode as soon as script is
141 # well tested. 150 # well tested.
142 self.Editor(self.Config(CHANGELOG_ENTRY_FILE)) 151 self.Editor(self.Config(CHANGELOG_ENTRY_FILE))
143 handle, new_changelog = tempfile.mkstemp() 152 handle, new_changelog = tempfile.mkstemp()
144 os.close(handle) 153 os.close(handle)
145 154
146 # (1) Eliminate tabs, (2) fix too little and (3) too much indentation, and 155 # (1) Strip comments, (2) eliminate tabs, (3) fix too little and (4) too
147 # (4) eliminate trailing whitespace. 156 # much indentation, and (5) eliminate trailing whitespace.
148 changelog_entry = FileToText(self.Config(CHANGELOG_ENTRY_FILE)).rstrip() 157 changelog_entry = FileToText(self.Config(CHANGELOG_ENTRY_FILE)).rstrip()
158 changelog_entry = StripComments(changelog_entry)
149 changelog_entry = MSub(r"\t", r" ", changelog_entry) 159 changelog_entry = MSub(r"\t", r" ", changelog_entry)
150 changelog_entry = MSub(r"^ {1,7}([^ ])", r" \1", changelog_entry) 160 changelog_entry = MSub(r"^ {1,7}([^ ])", r" \1", changelog_entry)
151 changelog_entry = MSub(r"^ {9,80}([^ ])", r" \1", changelog_entry) 161 changelog_entry = MSub(r"^ {9,80}([^ ])", r" \1", changelog_entry)
152 changelog_entry = MSub(r" +$", r"", changelog_entry) 162 changelog_entry = MSub(r" +$", r"", changelog_entry)
153 163
154 if changelog_entry == "": 164 if changelog_entry == "":
155 self.Die("Empty ChangeLog entry.") 165 self.Die("Empty ChangeLog entry.")
156 166
157 with open(new_changelog, "w") as f: 167 with open(new_changelog, "w") as f:
158 f.write(changelog_entry) 168 f.write(changelog_entry)
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 def Main(): 571 def Main():
562 parser = BuildOptions() 572 parser = BuildOptions()
563 (options, args) = parser.parse_args() 573 (options, args) = parser.parse_args()
564 if not ProcessOptions(options): 574 if not ProcessOptions(options):
565 parser.print_help() 575 parser.print_help()
566 return 1 576 return 1
567 RunPushToTrunk(CONFIG, options) 577 RunPushToTrunk(CONFIG, options)
568 578
569 if __name__ == "__main__": 579 if __name__ == "__main__":
570 sys.exit(Main()) 580 sys.exit(Main())
OLDNEW
« no previous file with comments | « tools/push-to-trunk/common_includes.py ('k') | tools/push-to-trunk/test_scripts.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698