convert: restore the ability to use bzr < 2.6.0 (issue5733)

This effectively conditionalizes 7ac081713920.  Some Linux distributions (like
CentOS 7) use really old versions, and the change referenced was causing
exceptions to be thrown.

Even though the deprecation warning says 'since 2.5.0', it wasn't marked as such
in 2.5.1, but is by 2.6.0.  This was tested with 2.4.2 and 2.6.0 with
PYTHONWARNINGS=::DeprecationWarning, and both paths were exercized.
This commit is contained in:
Matt Harbison 2017-12-01 23:27:08 -05:00
parent 83140eecbb
commit ffc3cccdf4

View File

@ -205,6 +205,13 @@ class bzr_source(common.converter_source):
changes = []
renames = {}
seen = set()
# Fall back to the deprecated attribute for legacy installations.
try:
inventory = origin.root_inventory
except AttributeError:
inventory = origin.inventory
# Process the entries by reverse lexicographic name order to
# handle nested renames correctly, most specific first.
curchanges = sorted(current.iter_changes(origin),
@ -229,10 +236,9 @@ class bzr_source(common.converter_source):
renaming = paths[0] != paths[1]
# neither an add nor an delete - a move
# rename all directory contents manually
subdir = origin.root_inventory.path2id(paths[0])
subdir = inventory.path2id(paths[0])
# get all child-entries of the directory
for name, entry in origin.root_inventory.iter_entries(
subdir):
for name, entry in inventory.iter_entries(subdir):
# hg does not track directory renames
if entry.kind == 'directory':
continue