# HG changeset patch # User Matt Harbison # Date 2017-12-02 04:27:08 # Node ID 759234670d19c6834e999c5efcef75626ca8f543 # Parent fff9ffa2ea05c3b661aa769644454b27266ab940 convert: restore the ability to use bzr < 2.6.0 (issue5733) This effectively conditionalizes a234b32b744a. 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. diff --git a/hgext/convert/bzr.py b/hgext/convert/bzr.py --- a/hgext/convert/bzr.py +++ b/hgext/convert/bzr.py @@ -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