776
def write_log(self, show_timezone='original', verbose=False,
778
"""Write out human-readable log of commits to this branch.
781
'original' (committer's timezone),
782
'utc' (universal time), or
783
'local' (local user's timezone)
786
If true show added/changed/deleted/renamed files.
789
If true, show revision and file ids.
792
self._need_readlock()
795
for p in self.revision_history():
797
print 'revno:', revno
798
rev = self.get_revision(p)
800
print 'revision-id:', rev.revision_id
801
print 'committer:', rev.committer
802
print 'timestamp: %s' % (format_date(rev.timestamp, rev.timezone or 0,
805
## opportunistic consistency check, same as check_patch_chaining
806
if rev.precursor != precursor:
807
raise BzrCheckError("mismatched precursor!")
811
print ' (no message)'
813
for l in rev.message.split('\n'):
816
if verbose == True and precursor != None:
817
# TODO: Group as added/deleted/renamed instead
818
# TODO: Show file ids
819
print 'changed files:'
820
tree = self.revision_tree(p)
821
prevtree = self.revision_tree(precursor)
823
for file_state, fid, old_name, new_name, kind in \
824
diff_trees(prevtree, tree, ):
825
if file_state == 'A' or file_state == 'M':
826
show_status(file_state, kind, new_name)
827
elif file_state == 'D':
828
show_status(file_state, kind, old_name)
829
elif file_state == 'R':
830
show_status(file_state, kind,
831
old_name + ' => ' + new_name)
837
776
def rename_one(self, from_rel, to_rel):
838
777
"""Rename one file.