~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/inventory.py

  • Committer: Robert Collins
  • Date: 2005-09-28 09:35:50 UTC
  • mfrom: (1185.1.47)
  • Revision ID: robertc@robertcollins.net-20050928093550-3ca194dfaffc79f1
merge from integration

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
ROOT_ID = "TREE_ROOT"
29
29
 
30
30
 
31
 
import sys, os.path, types, re
 
31
import os.path
 
32
import re
 
33
import sys
 
34
import types
32
35
 
33
36
import bzrlib
34
37
from bzrlib.errors import BzrError, BzrCheckError
35
38
 
36
 
from bzrlib.osutils import uuid, quotefn, splitpath, joinpath, appendpath
 
39
from bzrlib.osutils import quotefn, splitpath, joinpath, appendpath
37
40
from bzrlib.trace import mutter
38
41
from bzrlib.errors import NotVersionedError
39
 
        
 
42
 
40
43
 
41
44
class InventoryEntry(object):
42
45
    """Description of a versioned file.
55
58
    parent_id
56
59
        file_id of the parent directory, or ROOT_ID
57
60
 
58
 
    entry_version
 
61
    name_version
59
62
        the revision_id in which the name or parent of this file was
60
63
        last changed
61
64
 
98
101
    InventoryEntry('2326', 'wibble.c', kind='file', parent_id='2325')
99
102
    >>> i['2326']
100
103
    InventoryEntry('2326', 'wibble.c', kind='file', parent_id='2325')
101
 
    >>> for j in i.iter_entries():
102
 
    ...     print j[0]
103
 
    ...     assert i.path2id(j[0])
 
104
    >>> for path, entry in i.iter_entries():
 
105
    ...     print path.replace('\\\\', '/')     # for win32 os.sep
 
106
    ...     assert i.path2id(path)
104
107
    ... 
105
108
    src
106
109
    src/bye.c
107
110
    src/hello.c
108
111
    src/wibble
109
112
    src/wibble/wibble.c
110
 
    >>> i.id2path('2326')
 
113
    >>> i.id2path('2326').replace('\\\\', '/')
111
114
    'src/wibble/wibble.c'
112
115
    """
113
116
    
114
117
    __slots__ = ['text_sha1', 'text_size', 'file_id', 'name', 'kind',
115
118
                 'text_id', 'parent_id', 'children',
116
 
                 'text_version', 'entry_version', ]
 
119
                 'text_version', 'name_version', ]
117
120
 
118
121
 
119
122
    def __init__(self, file_id, name, kind, parent_id, text_id=None):
136
139
            raise BzrCheckError('InventoryEntry name %r is invalid' % name)
137
140
        
138
141
        self.text_version = None
139
 
        self.entry_version = None
 
142
        self.name_version = None
140
143
        self.text_sha1 = None
141
144
        self.text_size = None
142
145
        self.file_id = file_id
166
169
        other.text_sha1 = self.text_sha1
167
170
        other.text_size = self.text_size
168
171
        other.text_version = self.text_version
 
172
        other.name_version = self.name_version
169
173
        # note that children are *not* copied; they're pulled across when
170
174
        # others are added
171
175
        return other
192
196
               and (self.parent_id == other.parent_id) \
193
197
               and (self.kind == other.kind) \
194
198
               and (self.text_version == other.text_version) \
195
 
               and (self.entry_version == other.entry_version)
 
199
               and (self.name_version == other.name_version)
196
200
 
197
201
 
198
202
    def __ne__(self, other):
268
272
        The inventory is created with a default root directory, with
269
273
        an id of None.
270
274
        """
271
 
        # We are letting Branch(init=True) create a unique inventory
 
275
        # We are letting Branch.initialize() create a unique inventory
272
276
        # root id. Rather than generating a random one here.
273
277
        #if root_id is None:
274
278
        #    root_id = bzrlib.branch.gen_file_id('TREE_ROOT')
496
500
 
497
501
 
498
502
    def __ne__(self, other):
499
 
        return not (self == other)
 
503
        return not self.__eq__(other)
500
504
 
501
505
 
502
506
    def __hash__(self):