/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 breezy/git/tree.py

  • Committer: Jelmer Vernooij
  • Date: 2020-02-13 23:57:28 UTC
  • mfrom: (7490 work)
  • mto: This revision was merged to the branch mainline in revision 7492.
  • Revision ID: jelmer@jelmer.uk-20200213235728-m6ds0mm3mbs4y182
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
981
981
                          want_unversioned=False):
982
982
        raise NotImplementedError(self._iter_git_changes)
983
983
 
 
984
    def find_target_path(self, path, recurse='none'):
 
985
        ret = self.find_target_paths([path], recurse=recurse)
 
986
        return ret[path]
 
987
 
 
988
    def find_source_path(self, path, recurse='none'):
 
989
        ret = self.find_source_paths([path], recurse=recurse)
 
990
        return ret[path]
 
991
 
 
992
    def find_target_paths(self, paths, recurse='none'):
 
993
        paths = set(paths)
 
994
        ret = {}
 
995
        changes = self._iter_git_changes(specific_files=paths)[0]
 
996
        for (oldpath, newpath), (oldmode, newmode), (oldsha, newsha) in changes:
 
997
            if oldpath in paths:
 
998
                ret[oldpath] = newpath
 
999
        for path in paths:
 
1000
            if path not in ret:
 
1001
                if self.source.has_filename(path):
 
1002
                    if self.target.has_filename(path):
 
1003
                        ret[path] = path
 
1004
                    else:
 
1005
                        ret[path] = None
 
1006
                else:
 
1007
                    raise errors.NoSuchFile(path)
 
1008
        return ret
 
1009
 
 
1010
    def find_source_paths(self, paths, recurse='none'):
 
1011
        paths = set(paths)
 
1012
        ret = {}
 
1013
        changes = self._iter_git_changes(specific_files=paths)[0]
 
1014
        for (oldpath, newpath), (oldmode, newmode), (oldsha, newsha) in changes:
 
1015
            if newpath in paths:
 
1016
                ret[newpath] = oldpath
 
1017
        for path in paths:
 
1018
            if path not in ret:
 
1019
                if self.target.has_filename(path):
 
1020
                    if self.source.has_filename(path):
 
1021
                        ret[path] = path
 
1022
                    else:
 
1023
                        ret[path] = None
 
1024
                else:
 
1025
                    raise errors.NoSuchFile(path)
 
1026
        return ret
 
1027
 
984
1028
 
985
1029
class InterGitRevisionTrees(InterGitTrees):
986
1030
    """InterTree that works between two git revision trees."""