/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 bzrlib/transform.py

Merge commit builder changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
41
41
    has_symlinks,
42
42
    lexists,
43
43
    pathjoin,
 
44
    sha_file,
44
45
    splitpath,
45
46
    supports_executable,
46
47
)
280
281
            raise ValueError('None is not a valid file id')
281
282
        if file_id in self._r_new_id and self._r_new_id[file_id] is not None:
282
283
            return self._r_new_id[file_id]
283
 
        elif file_id in self._tree.inventory:
284
 
            return self.trans_id_tree_file_id(file_id)
285
 
        elif file_id in self._non_present_ids:
286
 
            return self._non_present_ids[file_id]
287
284
        else:
288
 
            trans_id = self._assign_id()
289
 
            self._non_present_ids[file_id] = trans_id
290
 
            return trans_id
 
285
            try:
 
286
                self._tree.iter_entries_by_dir([file_id]).next()
 
287
            except StopIteration:
 
288
                if file_id in self._non_present_ids:
 
289
                    return self._non_present_ids[file_id]
 
290
                else:
 
291
                    trans_id = self._assign_id()
 
292
                    self._non_present_ids[file_id] = trans_id
 
293
                    return trans_id
 
294
            else:
 
295
                return self.trans_id_tree_file_id(file_id)
291
296
 
292
297
    def canonical_path(self, path):
293
298
        """Get the canonical tree-relative path"""
549
554
        # the file is old; the old id is still valid
550
555
        if self._new_root == trans_id:
551
556
            return self._tree.get_root_id()
552
 
        return self._tree.inventory.path2id(path)
 
557
        return self._tree.path2id(path)
553
558
 
554
559
    def final_file_id(self, trans_id):
555
560
        """Determine the file id after any changes are applied, or None.
1006
1011
        from_path = self._tree_id_paths.get(from_trans_id)
1007
1012
        if from_versioned:
1008
1013
            # get data from working tree if versioned
1009
 
            from_entry = self._tree.inventory[file_id]
 
1014
            from_entry = self._tree.iter_entries_by_dir([file_id]).next()[1]
1010
1015
            from_name = from_entry.name
1011
1016
            from_parent = from_entry.parent_id
1012
1017
        else:
1438
1443
        file_id = self.tree_file_id(parent_id)
1439
1444
        if file_id is None:
1440
1445
            return
1441
 
        children = getattr(self._tree.inventory[file_id], 'children', {})
 
1446
        entry = self._tree.iter_entries_by_dir([file_id]).next()[1]
 
1447
        children = getattr(entry, 'children', {})
1442
1448
        for child in children:
1443
1449
            childpath = joinpath(path, child)
1444
1450
            yield self.trans_id_tree_path(childpath)
1666
1672
            return None
1667
1673
 
1668
1674
    def get_file_sha1(self, file_id, path=None, stat_value=None):
1669
 
        return self._transform._tree.get_file_sha1(file_id)
 
1675
        trans_id = self._transform.trans_id_file_id(file_id)
 
1676
        kind = self._transform._new_contents.get(trans_id)
 
1677
        if kind is None:
 
1678
            return self._transform._tree.get_file_sha1(file_id)
 
1679
        if kind == 'file':
 
1680
            fileobj = self.get_file(file_id)
 
1681
            try:
 
1682
                return sha_file(fileobj)
 
1683
            finally:
 
1684
                fileobj.close()
1670
1685
 
1671
1686
    def is_executable(self, file_id, path=None):
1672
1687
        if file_id is None: