WebKit needs a changelogs.py to hold changelog-related code
This is just a first-pass. We really need full-blown changelog parsing. I have several partial implementations of changelog parsing in other scripts, including attached to bug 26533.
This module is just moving the bugzilla-tool changelog code to a module and making it testable!
Created attachment 35167 [details]
I think eventually the ChangeLog class will change to be more stateful. Right
now it reads the ChangeLog from disk on every command. Eventually we'll
probably have explicit read/write commands and keep the ChangeLog in memory in
a parsed form. Not sure.
Comment on attachment 35167 [details]
A few things to consider..
> diff --git a/WebKitTools/Scripts/modules/changelogs.py
> +# Copyright (c) 2009, Google Inc. All rights reserved.
> +import fileinput # inplace file editing for set_reviewer_in_changelog
> +import re
> +# This doesn't really belong in this file, but we don't have a better home
for it yet.
> + if ChangeLog.date_line_regexp.match(line):
> + return ''.join(entry_lines[0:-1]) # Remove the extra newline
at the end
Indexes at the boundary need not be listed, so it could be
return ''.join(entry_lines[:-1]) # Remove the extra newline at the end.
However, I feel mildly paranoid about the blank line, so why not be slight more
robust line this?
if not entry_lines[-1].strip():
entry_lines = entry_lines[:-1]
return ''.join(entry_lines) # Remove the extra newline at the end.
> + def update_for_revert(self, revision):
> + reviewed_by_regexp = re.compile('Reviewed by NOBODY \(OOPS!\)\.')
> + removing_boilerplate = False
> + # inplace=1 creates a backup file and re-directs stdout to the file
> + for line in fileinput.FileInput(self.path, inplace=1):
> + if re.search(reviewed_by_regexp, line):
> + print re.sub(reviewed_by_regexp, "No review, rolling out
r%s." % revision, line),
> + print " %s\n" % view_source_url(revision)
> + # Remove all the ChangeLog boiler plate between the Reviewed
by line and the first changed file.
Summarizing some lost state (due to bugzilla db corruption):
Later Eric submitted another patch to address several of the issues which I then r+'ed (but I didn't find that it was checked in).