~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tree.py

Exclude more files from dumb-rsync upload

Show diffs side-by-side

added added

removed removed

Lines of Context:
58
58
    def has_id(self, file_id):
59
59
        return self.inventory.has_id(file_id)
60
60
 
 
61
    def has_or_had_id(self, file_id):
 
62
        if file_id == self.inventory.root.file_id:
 
63
            return True
 
64
        return self.inventory.has_id(file_id)
 
65
 
61
66
    __contains__ = has_id
62
67
 
63
68
    def __iter__(self):
66
71
    def id2path(self, file_id):
67
72
        return self.inventory.id2path(file_id)
68
73
 
 
74
    def kind(self, file_id):
 
75
        raise NotImplementedError("subclasses must implement kind")
 
76
 
69
77
    def _get_inventory(self):
70
78
        return self._inventory
71
79
    
128
136
        self._revision_id = revision_id
129
137
 
130
138
    def get_weave(self, file_id):
131
 
        return self._weave_store.get_weave(file_id)
 
139
        # FIXME: RevisionTree should be given a branch
 
140
        # not a store, or the store should know the branch.
 
141
        import bzrlib.transactions as transactions
 
142
        return self._weave_store.get_weave(file_id,
 
143
            transactions.PassThroughTransaction())
132
144
 
133
145
 
134
146
    def get_file_lines(self, file_id):
153
165
            return ie.text_sha1
154
166
 
155
167
    def is_executable(self, file_id):
 
168
        ie = self._inventory[file_id]
 
169
        if ie.kind != "file":
 
170
            return None 
156
171
        return self._inventory[file_id].executable
157
172
 
158
173
    def has_filename(self, filename):
167
182
        ie = self._inventory[file_id]
168
183
        return ie.symlink_target;
169
184
 
 
185
    def kind(self, file_id):
 
186
        return self._inventory[file_id].kind
 
187
 
170
188
 
171
189
class EmptyTree(Tree):
172
190
    def __init__(self):
178
196
    def has_filename(self, filename):
179
197
        return False
180
198
 
 
199
    def kind(self, file_id):
 
200
        assert self._inventory[file_id].kind == "root_directory"
 
201
        return "root_directory"
 
202
 
181
203
    def list_files(self):
182
204
        return iter([])
183
205
    
272
294
    """
273
295
    import os
274
296
    os.mkdir(dest)
275
 
    mutter('export version %r' % tree)
 
297
    mutter('export version %r', tree)
276
298
    inv = tree.inventory
277
299
    for dp, ie in inv.iter_entries():
278
 
        ie.put_on_disk(dest, dp, tree)
 
300
        if dp != ".bzrignore":
 
301
            ie.put_on_disk(dest, dp, tree)
279
302
 
280
303
exporters['dir'] = dir_exporter
281
304
 
321
344
            ball = tarfile.open(dest, 'w:' + compression)
322
345
        except tarfile.CompressionError, e:
323
346
            raise BzrError(str(e))
324
 
        mutter('export version %r' % tree)
 
347
        mutter('export version %r', tree)
325
348
        inv = tree.inventory
326
349
        for dp, ie in inv.iter_entries():
327
 
            mutter("  export {%s} kind %s to %s" % (ie.file_id, ie.kind, dest))
328
 
            item, fileobj = ie.get_tar_item(root, dp, now, tree)
329
 
            ball.addfile(item, fileobj)
 
350
            if dp != ".bzrignore":
 
351
                mutter("  export {%s} kind %s to %s" % (ie.file_id, ie.kind, dest))
 
352
                item, fileobj = ie.get_tar_item(root, dp, now, tree)
 
353
                ball.addfile(item, fileobj)
330
354
        ball.close()
331
355
 
332
356
    exporters['tar'] = tar_exporter