~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/inventory.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2006-06-13 17:02:41 UTC
  • mfrom: (1769.1.1 integration)
  • Revision ID: pqm@pqm.ubuntu.com-20060613170241-91efacfc55c6b9d2
(robertc, jelmer)Merge the new ControlFormat core logic to support .hg, .svn etc formats. (Robert Collins, Jelmer Vernooij)

Show diffs side-by-side

added added

removed removed

Lines of Context:
77
77
    >>> i.path2id('')
78
78
    'TREE_ROOT'
79
79
    >>> i.add(InventoryDirectory('123', 'src', ROOT_ID))
80
 
    InventoryDirectory('123', 'src', parent_id='TREE_ROOT')
 
80
    InventoryDirectory('123', 'src', parent_id='TREE_ROOT', revision=None)
81
81
    >>> i.add(InventoryFile('2323', 'hello.c', parent_id='123'))
82
 
    InventoryFile('2323', 'hello.c', parent_id='123')
 
82
    InventoryFile('2323', 'hello.c', parent_id='123', sha1=None, len=None)
83
83
    >>> shouldbe = {0: 'src', 1: pathjoin('src','hello.c')}
84
84
    >>> for ix, j in enumerate(i.iter_entries()):
85
85
    ...   print (j[0] == shouldbe[ix], j[1])
86
86
    ... 
87
 
    (True, InventoryDirectory('123', 'src', parent_id='TREE_ROOT'))
88
 
    (True, InventoryFile('2323', 'hello.c', parent_id='123'))
 
87
    (True, InventoryDirectory('123', 'src', parent_id='TREE_ROOT', revision=None))
 
88
    (True, InventoryFile('2323', 'hello.c', parent_id='123', sha1=None, len=None))
89
89
    >>> i.add(InventoryFile('2323', 'bye.c', '123'))
90
90
    Traceback (most recent call last):
91
91
    ...
92
92
    BzrError: inventory already contains entry with id {2323}
93
93
    >>> i.add(InventoryFile('2324', 'bye.c', '123'))
94
 
    InventoryFile('2324', 'bye.c', parent_id='123')
 
94
    InventoryFile('2324', 'bye.c', parent_id='123', sha1=None, len=None)
95
95
    >>> i.add(InventoryDirectory('2325', 'wibble', '123'))
96
 
    InventoryDirectory('2325', 'wibble', parent_id='123')
 
96
    InventoryDirectory('2325', 'wibble', parent_id='123', revision=None)
97
97
    >>> i.path2id('src/wibble')
98
98
    '2325'
99
99
    >>> '2325' in i
100
100
    True
101
101
    >>> i.add(InventoryFile('2326', 'wibble.c', '2325'))
102
 
    InventoryFile('2326', 'wibble.c', parent_id='2325')
 
102
    InventoryFile('2326', 'wibble.c', parent_id='2325', sha1=None, len=None)
103
103
    >>> i['2326']
104
 
    InventoryFile('2326', 'wibble.c', parent_id='2325')
 
104
    InventoryFile('2326', 'wibble.c', parent_id='2325', sha1=None, len=None)
105
105
    >>> for path, entry in i.iter_entries():
106
106
    ...     print path
107
107
    ...     assert i.path2id(path)
393
393
        return 'unchanged'
394
394
 
395
395
    def __repr__(self):
396
 
        return ("%s(%r, %r, parent_id=%r)"
 
396
        return ("%s(%r, %r, parent_id=%r, revision=%r)"
397
397
                % (self.__class__.__name__,
398
398
                   self.file_id,
399
399
                   self.name,
400
 
                   self.parent_id))
 
400
                   self.parent_id,
 
401
                   self.revision))
401
402
 
402
403
    def snapshot(self, revision, path, previous_entries,
403
404
                 work_tree, commit_builder):
508
509
        self.kind = 'root_directory'
509
510
        self.parent_id = None
510
511
        self.name = u''
 
512
        self.revision = None
511
513
 
512
514
    def __eq__(self, other):
513
515
        if not isinstance(other, RootEntry):
679
681
        # in _read_tree_state
680
682
        self.executable = work_tree.is_executable(self.file_id, path=path)
681
683
 
 
684
    def __repr__(self):
 
685
        return ("%s(%r, %r, parent_id=%r, sha1=%r, len=%s)"
 
686
                % (self.__class__.__name__,
 
687
                   self.file_id,
 
688
                   self.name,
 
689
                   self.parent_id,
 
690
                   self.text_sha1,
 
691
                   self.text_size))
 
692
 
682
693
    def _forget_tree_state(self):
683
694
        self.text_sha1 = None
684
695
        self.executable = None
815
826
 
816
827
    >>> inv = Inventory()
817
828
    >>> inv.add(InventoryFile('123-123', 'hello.c', ROOT_ID))
818
 
    InventoryFile('123-123', 'hello.c', parent_id='TREE_ROOT')
 
829
    InventoryFile('123-123', 'hello.c', parent_id='TREE_ROOT', sha1=None, len=None)
819
830
    >>> inv['123-123'].name
820
831
    'hello.c'
821
832
 
832
843
    [u'hello.c']
833
844
    >>> inv = Inventory('TREE_ROOT-12345678-12345678')
834
845
    >>> inv.add(InventoryFile('123-123', 'hello.c', ROOT_ID))
835
 
    InventoryFile('123-123', 'hello.c', parent_id='TREE_ROOT-12345678-12345678')
 
846
    InventoryFile('123-123', 'hello.c', parent_id='TREE_ROOT-12345678-12345678', sha1=None, len=None)
836
847
    """
837
848
    def __init__(self, root_id=ROOT_ID, revision_id=None):
838
849
        """Create or read an inventory.
849
860
        #if root_id is None:
850
861
        #    root_id = bzrlib.branch.gen_file_id('TREE_ROOT')
851
862
        self.root = RootEntry(root_id)
 
863
        # FIXME: this isn't ever used, changing it to self.revision may break
 
864
        # things. TODO make everything use self.revision_id
852
865
        self.revision_id = revision_id
853
866
        self._byid = {self.root.file_id: self.root}
854
867
 
984
997
 
985
998
        >>> inv = Inventory()
986
999
        >>> inv.add(InventoryFile('123', 'foo.c', ROOT_ID))
987
 
        InventoryFile('123', 'foo.c', parent_id='TREE_ROOT')
 
1000
        InventoryFile('123', 'foo.c', parent_id='TREE_ROOT', sha1=None, len=None)
988
1001
        >>> '123' in inv
989
1002
        True
990
1003
        >>> '456' in inv
997
1010
 
998
1011
        >>> inv = Inventory()
999
1012
        >>> inv.add(InventoryFile('123123', 'hello.c', ROOT_ID))
1000
 
        InventoryFile('123123', 'hello.c', parent_id='TREE_ROOT')
 
1013
        InventoryFile('123123', 'hello.c', parent_id='TREE_ROOT', sha1=None, len=None)
1001
1014
        >>> inv['123123'].name
1002
1015
        'hello.c'
1003
1016
        """
1070
1083
 
1071
1084
        >>> inv = Inventory()
1072
1085
        >>> inv.add(InventoryFile('123', 'foo.c', ROOT_ID))
1073
 
        InventoryFile('123', 'foo.c', parent_id='TREE_ROOT')
 
1086
        InventoryFile('123', 'foo.c', parent_id='TREE_ROOT', sha1=None, len=None)
1074
1087
        >>> '123' in inv
1075
1088
        True
1076
1089
        >>> del inv['123']
1094
1107
        >>> i1 == i2
1095
1108
        True
1096
1109
        >>> i1.add(InventoryFile('123', 'foo', ROOT_ID))
1097
 
        InventoryFile('123', 'foo', parent_id='TREE_ROOT')
 
1110
        InventoryFile('123', 'foo', parent_id='TREE_ROOT', sha1=None, len=None)
1098
1111
        >>> i1 == i2
1099
1112
        False
1100
1113
        >>> i2.add(InventoryFile('123', 'foo', ROOT_ID))
1101
 
        InventoryFile('123', 'foo', parent_id='TREE_ROOT')
 
1114
        InventoryFile('123', 'foo', parent_id='TREE_ROOT', sha1=None, len=None)
1102
1115
        >>> i1 == i2
1103
1116
        True
1104
1117
        """
1105
1118
        if not isinstance(other, Inventory):
1106
1119
            return NotImplemented
1107
1120
 
1108
 
        if len(self._byid) != len(other._byid):
1109
 
            # shortcut: obviously not the same
1110
 
            return False
1111
 
 
1112
1121
        return self._byid == other._byid
1113
1122
 
1114
1123
    def __ne__(self, other):