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):
|
def run(self):
|
||||||
if os.path.isdir('.bzr'):
|
if os.path.isdir('.bzr'):
|
||||||
# We're in a bzr branch
|
# We're in a bzr branch
|
||||||
log_cmd = subprocess.Popen(["bzr", "log", "--gnu"],
|
env = os.environ.copy()
|
||||||
stdout=subprocess.PIPE)
|
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]
|
changelog = log_cmd.communicate()[0]
|
||||||
with open("ChangeLog", "w") as changelog_file:
|
with open("ChangeLog", "w") as changelog_file:
|
||||||
changelog_file.write(changelog)
|
changelog_file.write(changelog)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user