/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: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2019-09-21 16:35:59 UTC
  • mfrom: (7358.11.10 delta-no-file-ids)
  • Revision ID: breezy.the.bot@gmail.com-20190921163559-inw7zv0fg2j35h68
TreeDelta holds TreeChange objects rather than tuples of various sizes.

Merged from https://code.launchpad.net/~jelmer/brz/delta-no-file-ids/+merge/369480

Show diffs side-by-side

added added

removed removed

Lines of Context:
699
699
    for (oldpath, newpath), (oldmode, newmode), (oldsha, newsha) in changes:
700
700
        if newpath == b'' and not include_root:
701
701
            continue
702
 
        if oldpath is None:
 
702
        if oldpath is not None:
 
703
            oldpath_decoded = oldpath.decode('utf-8')
 
704
        else:
703
705
            oldpath_decoded = None
 
706
        if newpath is not None:
 
707
            newpath_decoded = newpath.decode('utf-8')
704
708
        else:
705
 
            oldpath_decoded = oldpath.decode('utf-8')
706
 
        if newpath is None:
707
709
            newpath_decoded = None
708
 
        else:
709
 
            newpath_decoded = newpath.decode('utf-8')
710
710
        if not (specific_files is None or
711
711
                (oldpath is not None and
712
712
                    osutils.is_inside_or_parent_of_any(
715
715
                    osutils.is_inside_or_parent_of_any(
716
716
                        specific_files, newpath_decoded))):
717
717
            continue
 
718
 
 
719
        if oldpath_decoded is None:
 
720
            fileid = new_mapping.generate_file_id(newpath_decoded)
 
721
            oldexe = None
 
722
            oldkind = None
 
723
            oldname = None
 
724
            oldparent = None
 
725
            oldversioned = False
 
726
        else:
 
727
            oldversioned = True
 
728
            if oldmode:
 
729
                oldexe = mode_is_executable(oldmode)
 
730
                oldkind = mode_kind(oldmode)
 
731
            else:
 
732
                oldexe = False
 
733
                oldkind = None
 
734
            if oldpath_decoded == u'':
 
735
                oldparent = None
 
736
                oldname = u''
 
737
            else:
 
738
                (oldparentpath, oldname) = osutils.split(oldpath_decoded)
 
739
                oldparent = old_mapping.generate_file_id(oldparentpath)
 
740
            fileid = old_mapping.generate_file_id(oldpath_decoded)
 
741
        if newpath_decoded is None:
 
742
            newexe = None
 
743
            newkind = None
 
744
            newname = None
 
745
            newparent = None
 
746
            newversioned = False
 
747
        else:
 
748
            newversioned = (newpath_decoded not in target_extras)
 
749
            if newmode:
 
750
                newexe = mode_is_executable(newmode)
 
751
                newkind = mode_kind(newmode)
 
752
            else:
 
753
                newexe = False
 
754
                newkind = None
 
755
            if newpath_decoded == u'':
 
756
                newparent = None
 
757
                newname = u''
 
758
            else:
 
759
                newparentpath, newname = osutils.split(newpath_decoded)
 
760
                newparent = new_mapping.generate_file_id(newparentpath)
718
761
        if old_mapping.is_special_file(oldpath):
719
762
            oldpath = None
720
763
        if new_mapping.is_special_file(newpath):
721
764
            newpath = None
722
765
        if oldpath is None and newpath is None:
723
766
            continue
 
767
        change = _mod_tree.TreeChange(
 
768
            fileid, (oldpath_decoded, newpath_decoded), (oldsha != newsha),
 
769
            (oldversioned, newversioned),
 
770
            (oldparent, newparent), (oldname, newname),
 
771
            (oldkind, newkind), (oldexe, newexe))
724
772
        if oldpath is None:
725
 
            added.append((newpath, mode_kind(newmode)))
 
773
            added.append((newpath, newkind))
726
774
        elif newpath is None or newmode == 0:
727
 
            file_id = old_mapping.generate_file_id(oldpath_decoded)
728
 
            ret.removed.append((oldpath_decoded, file_id, mode_kind(oldmode)))
 
775
            ret.removed.append(change)
729
776
        elif oldpath != newpath:
730
 
            file_id = old_mapping.generate_file_id(oldpath_decoded)
731
 
            ret.renamed.append(
732
 
                (oldpath_decoded, newpath.decode('utf-8'), file_id,
733
 
                 mode_kind(newmode), (oldsha != newsha),
734
 
                 (oldmode != newmode)))
 
777
            ret.renamed.append(change)
735
778
        elif mode_kind(oldmode) != mode_kind(newmode):
736
 
            file_id = new_mapping.generate_file_id(newpath_decoded)
737
 
            ret.kind_changed.append(
738
 
                (newpath_decoded, file_id, mode_kind(oldmode),
739
 
                 mode_kind(newmode)))
 
779
            ret.kind_changed.append(change)
740
780
        elif oldsha != newsha or oldmode != newmode:
741
781
            if stat.S_ISDIR(oldmode) and stat.S_ISDIR(newmode):
742
782
                continue
743
 
            file_id = new_mapping.generate_file_id(newpath_decoded)
744
 
            ret.modified.append(
745
 
                (newpath_decoded, file_id, mode_kind(newmode),
746
 
                 (oldsha != newsha), (oldmode != newmode)))
 
783
            ret.modified.append(change)
747
784
        else:
748
 
            file_id = new_mapping.generate_file_id(newpath_decoded)
749
 
            ret.unchanged.append(
750
 
                (newpath_decoded, file_id, mode_kind(newmode)))
 
785
            ret.unchanged.append(change)
751
786
 
752
787
    implicit_dirs = {b''}
753
788
    for path, kind in added:
759
794
        if kind == 'directory' and path not in implicit_dirs:
760
795
            continue
761
796
        path_decoded = osutils.normalized_filename(path)[0]
 
797
        parent_path, basename = osutils.split(path_decoded)
 
798
        parent_id = new_mapping.generate_file_id(parent_path)
762
799
        if path in target_extras:
763
 
            ret.unversioned.append((path_decoded, None, kind))
 
800
            ret.unversioned.append(_mod_tree.TreeChange(
 
801
                None, (None, path_decoded),
 
802
                True, (False, False), (None, parent_id),
 
803
                (None, basename), (None, kind), (None, False)))
764
804
        else:
765
805
            file_id = new_mapping.generate_file_id(path_decoded)
766
 
            ret.added.append((path_decoded, file_id, kind))
 
806
            ret.added.append(
 
807
                _mod_tree.TreeChange(
 
808
                    file_id, (None, path_decoded), True,
 
809
                    (False, True),
 
810
                    (None, parent_id),
 
811
                    (None, basename), (None, kind), (None, False)))
767
812
 
768
813
    return ret
769
814