~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tree.py

  • Committer: John Arbash Meinel
  • Date: 2006-08-14 16:16:53 UTC
  • mto: (1946.2.6 reduce-knit-churn)
  • mto: This revision was merged to the branch mainline in revision 1919.
  • Revision ID: john@arbash-meinel.com-20060814161653-54cdcdadcd4e9003
Remove bogus entry from BRANCH.TODO

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
 
20
20
import os
21
21
from cStringIO import StringIO
 
22
from warnings import warn
22
23
 
23
24
import bzrlib
24
 
from bzrlib import (
25
 
    delta,
26
 
    symbol_versioning,
27
 
    )
 
25
from bzrlib import delta
28
26
from bzrlib.decorators import needs_read_lock
29
27
from bzrlib.errors import BzrError, BzrCheckError
30
28
from bzrlib import errors
56
54
    """
57
55
    
58
56
    def changes_from(self, other, want_unchanged=False, specific_files=None,
59
 
        extra_trees=None, require_versioned=False, include_root=False):
 
57
        extra_trees=None, require_versioned=False):
60
58
        """Return a TreeDelta of the changes from other to this tree.
61
59
 
62
60
        :param other: A tree to compare with.
83
81
            specific_files=specific_files,
84
82
            extra_trees=extra_trees,
85
83
            require_versioned=require_versioned,
86
 
            include_root=include_root
87
84
            )
88
85
    
89
86
    def conflicts(self):
122
119
    def id2path(self, file_id):
123
120
        return self.inventory.id2path(file_id)
124
121
 
125
 
    def is_control_filename(self, filename):
126
 
        """True if filename is the name of a control file in this tree.
127
 
        
128
 
        :param filename: A filename within the tree. This is a relative path
129
 
        from the root of this tree.
130
 
 
131
 
        This is true IF and ONLY IF the filename is part of the meta data
132
 
        that bzr controls in this tree. I.E. a random .bzr directory placed
133
 
        on disk will not be a control file for this tree.
134
 
        """
135
 
        return self.bzrdir.is_control_filename(filename)
136
 
 
137
122
    def iter_entries_by_dir(self):
138
123
        """Walk the tree in 'by_dir' order.
139
124
 
150
135
    def _get_inventory(self):
151
136
        return self._inventory
152
137
    
153
 
    def get_file(self, file_id):
154
 
        """Return a file object for the file file_id in the tree."""
155
 
        raise NotImplementedError(self.get_file)
156
 
    
157
138
    def get_file_by_path(self, path):
158
139
        return self.get_file(self._inventory.path2id(path))
159
140
 
166
147
        fp = fingerprint_file(f)
167
148
        f.seek(0)
168
149
        
169
 
        if ie.text_size is not None:
 
150
        if ie.text_size != None:
170
151
            if ie.text_size != fp['size']:
171
152
                raise BzrError("mismatched size for file %r in %r" % (ie.file_id, self._store),
172
153
                        ["inventory expects %d bytes" % ie.text_size,
179
160
                     "file is actually %s" % fp['sha1'],
180
161
                     "store is probably damaged/corrupt"])
181
162
 
182
 
    def path2id(self, path):
183
 
        """Return the id for path in this tree."""
184
 
        return self._inventory.path2id(path)
185
163
 
186
164
    def print_file(self, file_id):
187
165
        """Print file with id `file_id` to stdout."""
213
191
        return set((p for p in paths if not pred(p)))
214
192
 
215
193
 
 
194
# for compatibility
 
195
from bzrlib.revisiontree import RevisionTree
 
196
 
 
197
 
216
198
class EmptyTree(Tree):
217
199
 
218
200
    def __init__(self):
219
 
        self._inventory = Inventory(root_id=None)
220
 
        symbol_versioning.warn('EmptyTree is deprecated as of bzr 0.9 please'
221
 
                               ' use repository.revision_tree instead.',
222
 
                               DeprecationWarning, stacklevel=2)
 
201
        self._inventory = Inventory()
 
202
        warn('EmptyTree is deprecated as of bzr 0.9 please use '
 
203
            'repository.revision_tree instead.',
 
204
            DeprecationWarning, stacklevel=2)
223
205
 
224
206
    def get_parent_ids(self):
225
207
        return []
234
216
        assert self._inventory[file_id].kind == "directory"
235
217
        return "directory"
236
218
 
237
 
    def list_files(self, include_root=False):
 
219
    def list_files(self):
238
220
        return iter([])
239
221
    
240
222
    def __contains__(self, file_id):
241
 
        return (file_id in self._inventory)
 
223
        return file_id in self._inventory
242
224
 
243
225
    def get_file_sha1(self, file_id, path=None):
244
226
        return None
393
375
    will pass through to InterTree as appropriate.
394
376
    """
395
377
 
396
 
    _optimisers = []
 
378
    _optimisers = set()
397
379
 
398
380
    @needs_read_lock
399
381
    def compare(self, want_unchanged=False, specific_files=None,
400
 
        extra_trees=None, require_versioned=False, include_root=False):
 
382
        extra_trees=None, require_versioned=False):
401
383
        """Return the changes from source to target.
402
384
 
403
385
        :return: A TreeDelta.
425
407
            # _compare_trees would think we want a complete delta
426
408
            return delta.TreeDelta()
427
409
        return delta._compare_trees(self.source, self.target, want_unchanged,
428
 
            specific_file_ids, include_root)
429
 
 
430
 
 
431
 
# This was deprecated before 0.12, but did not have an official warning
432
 
@symbol_versioning.deprecated_function(symbol_versioning.zero_twelve)
433
 
def RevisionTree(*args, **kwargs):
434
 
    """RevisionTree has moved to bzrlib.revisiontree.RevisionTree()
435
 
 
436
 
    Accessing it as bzrlib.tree.RevisionTree has been deprecated as of
437
 
    bzr 0.12.
438
 
    """
439
 
    from bzrlib.revisiontree import RevisionTree as _RevisionTree
440
 
    return _RevisionTree(*args, **kwargs)
441
 
 
442
 
 
 
410
            specific_file_ids)