1370
def show_foreign_info(self, rev, indent):
1371
"""Custom log displayer for foreign revision identifiers.
1373
:param rev: Revision object.
1375
# Revision comes directly from a foreign repository
1376
if isinstance(rev, foreign.ForeignRevision):
1377
self._write_properties(indent, rev.mapping.vcs.show_foreign_revid(
1381
# Imported foreign revision revision ids always contain :
1382
if not ":" in rev.revision_id:
1385
# Revision was once imported from a foreign repository
1387
foreign_revid, mapping = \
1388
foreign.foreign_vcs_registry.parse_revision_id(rev.revision_id)
1389
except errors.InvalidRevisionId:
1392
self._write_properties(indent,
1393
mapping.vcs.show_foreign_revid(foreign_revid))
1369
1395
def show_properties(self, revision, indent):
1370
1396
"""Displays the custom properties returned by each registered handler.
1372
1398
If a registered handler raises an error it is propagated.
1374
1400
for key, handler in properties_handler_registry.iteritems():
1375
for key, value in handler(revision).items():
1376
self.to_file.write(indent + key + ': ' + value + '\n')
1401
self._write_properties(indent, handler(revision))
1403
def _write_properties(self, indent, properties):
1404
for key, value in properties.items():
1405
self.to_file.write(indent + key + ': ' + value + '\n')
1378
1407
def show_diff(self, to_file, diff, indent):
1379
1408
for l in diff.rstrip().split('\n'):
1403
1432
to_file.write('\n')
1404
1433
for parent_id in revision.rev.parent_ids:
1405
1434
to_file.write(indent + 'parent: %s\n' % (parent_id,))
1435
self.show_foreign_info(revision.rev, indent)
1406
1436
self.show_properties(revision.rev, indent)
1408
1438
committer = revision.rev.committer
1485
1515
self.show_timezone, date_fmt="%Y-%m-%d",
1486
1516
show_offset=False),
1487
1517
tags, self.merge_marker(revision)))
1518
self.show_foreign_info(revision.rev, indent+offset)
1488
1519
self.show_properties(revision.rev, indent+offset)
1489
1520
if self.show_ids:
1490
1521
to_file.write(indent + offset + 'revision-id:%s\n'
1903
1934
properties_handler_registry = registry.Registry()
1904
properties_handler_registry.register_lazy("foreign",
1906
"show_foreign_properties")
1909
1937
# adapters which revision ids to log are filtered. When log is called, the