/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to tree.py

  • Committer: Jelmer Vernooij
  • Date: 2018-03-25 18:22:28 UTC
  • mto: (0.200.1895 work)
  • mto: This revision was merged to the branch mainline in revision 6960.
  • Revision ID: jelmer@jelmer.uk-20180325182228-dafjeclx57ooxf42
Pass along target_missing.

Show diffs side-by-side

added added

removed removed

Lines of Context:
559
559
    return ret
560
560
 
561
561
 
562
 
def changes_from_git_changes(changes, mapping, specific_files=None, include_unchanged=False):
 
562
def changes_from_git_changes(changes, mapping, specific_files=None, include_unchanged=False,
 
563
                             target_missing=None):
563
564
    """Create a iter_changes-like generator from a git stream.
564
565
 
565
566
    source and target are iterators over tuples with:
566
567
        (filename, sha, mode)
567
568
    """
 
569
    if target_missing is None:
 
570
        target_missing = set()
568
571
    for (oldpath, newpath), (oldmode, newmode), (oldsha, newsha) in changes:
569
572
        if not (specific_files is None or
570
573
                (oldpath is not None and osutils.is_inside_or_parent_of_any(specific_files, oldpath)) or
618
621
            oldpath == newpath):
619
622
            continue
620
623
        yield (fileid, (oldpath, newpath), (oldsha != newsha),
621
 
             (oldpath is not None, newpath is not None),
 
624
             (oldpath is not None, newpath is not None or newpath in target_missing),
622
625
             (oldparent, newparent), (oldname, newname),
623
626
             (oldkind, newkind), (oldexe, newexe))
624
627
 
638
641
    def compare(self, want_unchanged=False, specific_files=None,
639
642
                extra_trees=None, require_versioned=False, include_root=False,
640
643
                want_unversioned=False):
641
 
        changes = self._iter_git_changes(want_unchanged=want_unchanged,
 
644
        changes, target_missing = self._iter_git_changes(
 
645
                want_unchanged=want_unchanged,
642
646
                require_versioned=require_versioned,
643
647
                specific_files=specific_files,
644
648
                extra_trees=extra_trees)
651
655
    def iter_changes(self, include_unchanged=False, specific_files=None,
652
656
                     pb=None, extra_trees=[], require_versioned=True,
653
657
                     want_unversioned=False):
654
 
        changes = self._iter_git_changes(want_unchanged=include_unchanged,
 
658
        changes, target_missing = self._iter_git_changes(
 
659
                want_unchanged=include_unchanged,
655
660
                require_versioned=require_versioned,
656
661
                specific_files=specific_files,
657
662
                extra_trees=extra_trees)
658
663
        return changes_from_git_changes(changes, self.target.mapping,
659
 
            specific_files=specific_files, include_unchanged=include_unchanged)
 
664
            specific_files=specific_files, include_unchanged=include_unchanged,
 
665
            target_missing=target_missing)
660
666
 
661
667
    def _iter_git_changes(self, want_unchanged=False, specific_files=None,
662
668
            require_versioned=False, extra_trees=None):
692
698
            store = self.source._repository._git.object_store
693
699
        return self.source._repository._git.object_store.tree_changes(
694
700
            self.source.tree, self.target.tree, want_unchanged=want_unchanged,
695
 
            include_trees=True, change_type_same=True)
 
701
            include_trees=True, change_type_same=True), set()
696
702
 
697
703
 
698
704
_mod_tree.InterTree.register_optimiser(InterGitRevisionTrees)