OLD | NEW |
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 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
250 class SquashCommits(Step): | 250 class SquashCommits(Step): |
251 MESSAGE = "Squash commits into one." | 251 MESSAGE = "Squash commits into one." |
252 | 252 |
253 def RunStep(self): | 253 def RunStep(self): |
254 # Instead of relying on "git rebase -i", we'll just create a diff, because | 254 # Instead of relying on "git rebase -i", we'll just create a diff, because |
255 # that's easier to automate. | 255 # that's easier to automate. |
256 self.RestoreIfUnset("prepare_commit_hash") | 256 self.RestoreIfUnset("prepare_commit_hash") |
257 args = "diff svn/trunk %s" % self._state["prepare_commit_hash"] | 257 args = "diff svn/trunk %s" % self._state["prepare_commit_hash"] |
258 TextToFile(self.Git(args), self.Config(PATCH_FILE)) | 258 TextToFile(self.Git(args), self.Config(PATCH_FILE)) |
259 | 259 |
260 # Convert the ChangeLog entry to commit message format: | 260 # Convert the ChangeLog entry to commit message format. |
261 # - remove date | |
262 # - remove indentation | |
263 # - merge paragraphs into single long lines, keeping empty lines between | |
264 # them. | |
265 self.RestoreIfUnset("date") | 261 self.RestoreIfUnset("date") |
266 changelog_entry = FileToText(self.Config(CHANGELOG_ENTRY_FILE)) | 262 text = FileToText(self.Config(CHANGELOG_ENTRY_FILE)) |
267 | 263 |
268 # TODO(machenbach): This could create a problem if the changelog contained | 264 # Remove date and trailing white space. |
269 # any quotation marks. | 265 text = re.sub(r"^%s: " % self._state["date"], "", text.rstrip()) |
270 text = Command("echo \"%s\" \ | 266 |
271 | sed -e \"s/^%s: //\" \ | 267 # Remove indentation and merge paragraphs into single long lines, keeping |
272 | sed -e 's/^ *//' \ | 268 # empty lines between them. |
273 | awk '{ \ | 269 def SplitMapJoin(split_text, fun, join_text): |
274 if (need_space == 1) {\ | 270 return lambda text: join_text.join(map(fun, text.split(split_text))) |
275 printf(\" \");\ | 271 strip = lambda line: line.strip() |
276 };\ | 272 text = SplitMapJoin("\n\n", SplitMapJoin("\n", strip, " "), "\n\n")(text) |
277 printf(\"%%s\", $0);\ | |
278 if ($0 ~ /^$/) {\ | |
279 printf(\"\\n\\n\");\ | |
280 need_space = 0;\ | |
281 } else {\ | |
282 need_space = 1;\ | |
283 }\ | |
284 }'" % (changelog_entry, self._state["date"])) | |
285 | 273 |
286 if not text: | 274 if not text: |
287 self.Die("Commit message editing failed.") | 275 self.Die("Commit message editing failed.") |
288 TextToFile(text, self.Config(COMMITMSG_FILE)) | 276 TextToFile(text, self.Config(COMMITMSG_FILE)) |
289 os.remove(self.Config(CHANGELOG_ENTRY_FILE)) | 277 os.remove(self.Config(CHANGELOG_ENTRY_FILE)) |
290 | 278 |
291 | 279 |
292 class NewBranch(Step): | 280 class NewBranch(Step): |
293 MESSAGE = "Create a new branch from trunk." | 281 MESSAGE = "Create a new branch from trunk." |
294 | 282 |
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
578 def Main(): | 566 def Main(): |
579 parser = BuildOptions() | 567 parser = BuildOptions() |
580 (options, args) = parser.parse_args() | 568 (options, args) = parser.parse_args() |
581 if not ProcessOptions(options): | 569 if not ProcessOptions(options): |
582 parser.print_help() | 570 parser.print_help() |
583 return 1 | 571 return 1 |
584 RunPushToTrunk(CONFIG, options) | 572 RunPushToTrunk(CONFIG, options) |
585 | 573 |
586 if __name__ == "__main__": | 574 if __name__ == "__main__": |
587 sys.exit(Main()) | 575 sys.exit(Main()) |
OLD | NEW |