638
639
result.append((file_id, changed, parents3, names3, executable3))
642
def _entries_lca(self):
643
"""Gather data about files modified between multiple trees.
645
This compares OTHER versus all LCA trees, and for interesting entries,
646
it then compares with THIS and BASE.
648
For the multi-valued entries, the format will be (BASE, [lca1, lca2])
649
:return: [(file_id, changed, parents, names, executable)]
650
file_id Simple file_id of the entry
651
changed Boolean, True if the kind or contents changed
653
parents ((base, [parent_id, in, lcas]), parent_id_other,
655
names ((base, [name, in, lcas]), name_in_other, name_in_this)
656
executable ((base, [exec, in, lcas]), exec_in_other, exec_in_this)
659
walker = _mod_tree.MultiWalker(self.other_tree,
660
self._lca_trees.values())
662
for path, file_id, other_ie, lca_values in walker.iter_all():
663
# Is this modified at all from any of the other trees?
664
last_rev = other_ie.revision
665
for lca_path, ie in lca_values:
666
if ie.revision != last_rev:
668
else: # Identical in all trees
670
base_ie = self.base_tree.inventory[file_id]
671
this_ie = self.this_tree.inventory[file_id]
672
result.append((file_id, True,
674
[ie.parent_id for path, ie in lca_values]),
675
other_ie.parent_id, this_ie.parent_id),
677
[ie.name for path, ie in lca_values]),
678
other_ie.name, this_ie.name),
679
((base_ie.executable,
680
[ie.executable for path, ie in lca_values]),
681
other_ie.executable, this_ie.executable)
641
686
def fix_root(self):
643
688
self.tt.final_kind(self.tt.root)