73
77
if kinds[pos] is None:
74
78
kinds[pos] = self.kind(f)
76
def put_file_bytes_non_atomic(self, path, bytes, file_id=None):
80
def put_file_bytes_non_atomic(self, path, bytes):
77
81
"""See MutableTree.put_file_bytes_non_atomic."""
78
82
self._file_transport.put_bytes(path, bytes)
86
90
self._file_transport = MemoryTransport()
87
91
if self.branch.head is None:
89
self._basis_fileid_map = GitFileIdMap({}, self.mapping)
91
94
tree_id = self.store[self.branch.head].tree
92
self._basis_fileid_map = self.mapping.get_fileid_map(
93
self.store.__getitem__, tree_id)
94
95
tree = self.store[tree_id]
95
self._fileid_map = self._basis_fileid_map.copy()
97
97
trees = [("", tree)]
99
99
(path, tree) = trees.pop()
100
100
for name, mode, sha in tree.iteritems():
101
subpath = posixpath.join(path, name.decode('utf-8'))
101
subpath = posixpath.join(path, decode_git_path(name))
102
102
if stat.S_ISDIR(mode):
103
103
self._file_transport.mkdir(subpath)
104
104
trees.append((subpath, self.store[sha]))
186
186
elif stat.S_ISLNK(stat_val.st_mode):
187
187
blob = Blob.from_string(
188
self._file_transport.readlink(path).encode('utf-8'))
188
encode_git_path(self._file_transport.readlink(path)))
189
189
elif stat.S_ISREG(stat_val.st_mode):
190
190
blob = Blob.from_string(self._file_transport.get_bytes(path))
192
192
raise AssertionError('unknown type %d' % stat_val.st_mode)
193
193
return index_entry_from_stat(stat_val, blob.id, 0)
195
def get_file_with_stat(self, path, file_id=None):
196
return (self.get_file(path, file_id), self._lstat(path))
195
def get_file_with_stat(self, path):
196
return (self.get_file(path), self._lstat(path))
198
def get_file(self, path, file_id=None):
198
def get_file(self, path):
199
199
"""See Tree.get_file."""
200
200
return self._file_transport.get(path)
202
def get_file_sha1(self, path, file_id=None, stat_value=None):
202
def get_file_sha1(self, path, stat_value=None):
203
203
"""See Tree.get_file_sha1()."""
204
204
stream = self._file_transport.get(path)
205
205
return osutils.sha_file(stream)
258
258
def kind(self, p):
259
259
stat_value = self._file_transport.stat(p)
260
260
return osutils.file_kind_from_stat_mode(stat_value.st_mode)
262
def get_symlink_target(self, path):
263
with self.lock_read():
264
return self._file_transport.readlink(path)