Better log formatter for Nova. It's just like gnuchangelog, but logs the author rather than the committer.
This commit is contained in:
parent
e185a95ae6
commit
921d9d01d7
59
bzrplugins/novalog/__init__.py
Normal file
59
bzrplugins/novalog/__init__.py
Normal file
@ -0,0 +1,59 @@
|
||||
# Copyright 2010 OpenStack LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
"""Log format for Nova's changelog."""
|
||||
|
||||
import bzrlib.log
|
||||
from bzrlib.osutils import format_date
|
||||
|
||||
#
|
||||
# This is mostly stolen from bzrlib.log.GnuChangelogLogFormatter
|
||||
# The difference is that it logs the author rather than the committer
|
||||
# which for Nova always is Tarmac.
|
||||
#
|
||||
class NovaLogFormat(bzrlib.log.GnuChangelogLogFormatter):
|
||||
preferred_levels = 1
|
||||
def log_revision(self, revision):
|
||||
"""Log a revision, either merged or not."""
|
||||
to_file = self.to_file
|
||||
|
||||
date_str = format_date(revision.rev.timestamp,
|
||||
revision.rev.timezone or 0,
|
||||
self.show_timezone,
|
||||
date_fmt='%Y-%m-%d',
|
||||
show_offset=False)
|
||||
|
||||
authors = revision.rev.get_apparent_authors()
|
||||
to_file.write('%s %s\n\n' % (date_str, ", ".join(authors)))
|
||||
|
||||
if revision.delta is not None and revision.delta.has_changed():
|
||||
for c in revision.delta.added + revision.delta.removed + revision.delta.modified:
|
||||
path, = c[:1]
|
||||
to_file.write('\t* %s:\n' % (path,))
|
||||
for c in revision.delta.renamed:
|
||||
oldpath,newpath = c[:2]
|
||||
# For renamed files, show both the old and the new path
|
||||
to_file.write('\t* %s:\n\t* %s:\n' % (oldpath,newpath))
|
||||
to_file.write('\n')
|
||||
|
||||
if not revision.rev.message:
|
||||
to_file.write('\tNo commit message\n')
|
||||
else:
|
||||
message = revision.rev.message.rstrip('\r\n')
|
||||
for l in message.split('\n'):
|
||||
to_file.write('\t%s\n' % (l.lstrip(),))
|
||||
to_file.write('\n')
|
||||
|
||||
bzrlib.log.register_formatter('novalog', NovaLogFormat)
|
||||
|
6
setup.py
6
setup.py
@ -29,8 +29,10 @@ class local_sdist(sdist):
|
||||
def run(self):
|
||||
if os.path.isdir('.bzr'):
|
||||
# We're in a bzr branch
|
||||
log_cmd = subprocess.Popen(["bzr", "log", "--gnu"],
|
||||
stdout=subprocess.PIPE)
|
||||
env = os.environ.copy()
|
||||
env['BZR_PLUGIN_PATH'] = os.path.abspath('./bzrplugins')
|
||||
log_cmd = subprocess.Popen(["bzr", "log", "--novalog"],
|
||||
stdout=subprocess.PIPE, env=env)
|
||||
changelog = log_cmd.communicate()[0]
|
||||
with open("ChangeLog", "w") as changelog_file:
|
||||
changelog_file.write(changelog)
|
||||
|
Loading…
Reference in New Issue
Block a user