/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/memorytree.py

  • Committer: Vincent Ladeuil
  • Date: 2019-03-06 14:03:19 UTC
  • mfrom: (7290.1.15 work)
  • mto: This revision was merged to the branch mainline in revision 7295.
  • Revision ID: v.ladeuil+brz@free.fr-20190306140319-zgjegynpjv3vv0jg
Merge 3.0 into trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
from __future__ import absolute_import
23
23
 
24
24
import os
 
25
import stat
25
26
 
26
27
from . import (
27
28
    errors,
62
63
        with self.lock_tree_write():
63
64
            for f, file_id, kind in zip(files, ids, kinds):
64
65
                if kind is None:
65
 
                    kind = 'file'
 
66
                    st_mode = self._file_transport.stat(f).st_mode
 
67
                    if stat.S_ISREG(st_mode):
 
68
                        kind = 'file'
 
69
                    elif stat.S_ISLNK(st_mode):
 
70
                        kind = 'symlink'
 
71
                    elif stat.S_ISDIR(st_mode):
 
72
                        kind = 'directory'
 
73
                    else:
 
74
                        raise AssertionError('Unknown file kind')
66
75
                if file_id is None:
67
76
                    self._inventory.add_path(f, kind=kind)
68
77
                else:
127
136
            # memory tree does not support nested trees yet.
128
137
            return kind, None, None, None
129
138
        elif kind == 'symlink':
130
 
            raise NotImplementedError('symlink support')
 
139
            return kind, None, None, self._inventory[id].symlink_target
131
140
        else:
132
141
            raise NotImplementedError('unknown kind')
133
142
 
148
157
        return self._inventory.get_entry_by_path(path).executable
149
158
 
150
159
    def kind(self, path):
151
 
        file_id = self.path2id(path)
152
 
        return self._inventory[file_id].kind
 
160
        return self._inventory.get_entry_by_path(path).kind
153
161
 
154
162
    def mkdir(self, path, file_id=None):
155
163
        """See MutableTree.mkdir()."""
227
235
                continue
228
236
            if entry.kind == 'directory':
229
237
                self._file_transport.mkdir(path)
 
238
            elif entry.kind == 'symlink':
 
239
                self._file_transport.symlink(entry.symlink_target, path)
230
240
            elif entry.kind == 'file':
231
241
                self._file_transport.put_file(
232
242
                    path, self._basis_tree.get_file(path))
302
312
            else:
303
313
                raise
304
314
 
 
315
    def get_symlink_target(self, path):
 
316
        with self.lock_read():
 
317
            return self._file_transport.readlink(path)
 
318
 
305
319
    def set_parent_trees(self, parents_list, allow_leftmost_as_ghost=False):
306
320
        """See MutableTree.set_parent_trees()."""
307
321
        if len(parents_list) == 0: