Generate an iterator of changes between trees.
A tuple is returned:
(file_id, (path_in_source, path_in_target),
changed_content, versioned, parent, name, kind,
Changed_content is True if the file's content has changed. This
includes changes to its kind, and to a symlink's target.
versioned, parent, name, kind, executable are tuples of (from, to).
If a file is missing in a tree, its kind is None.
Iteration is done in parent-to-child order, relative to the target
There is no guarantee that all paths are in sorted order: the
requirement to expand the search due to renames may result in children
that should be found early being found late in the search, after
lexically later results have been returned.
:param require_versioned: Raise errors.PathsNotVersionedError if a
path in the specific_files list is not versioned in one of
source, target or extra_trees.
:param specific_files: An optional list of file paths to restrict the
comparison to. When mapping filenames to ids, all matches in all
trees (including optional extra_trees) are used, and all children
of matched directories are included. The parents in the target tree
of the specific files up to and including the root of the tree are
always evaluated for changes too.
:param want_unversioned: Should unversioned files be returned in the
output. An unversioned file is defined as one with (False, False)
for the versioned pair.