61 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#    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
 | 
						|
 | 
						|
 | 
						|
class NovaLogFormat(bzrlib.log.GnuChangelogLogFormatter):
 | 
						|
    """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."""
 | 
						|
 | 
						|
    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)
 |