~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/memorytree.py

  • Committer: Jelmer Vernooij
  • Date: 2011-12-19 10:58:39 UTC
  • mfrom: (6383 +trunk)
  • mto: This revision was merged to the branch mainline in revision 6386.
  • Revision ID: jelmer@canonical.com-20111219105839-uji05ck4rkm1mj4j
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
 
17
from __future__ import absolute_import
 
18
 
17
19
"""MemoryTree object.
18
20
 
19
21
See MemoryTree for more details.
28
30
    revision as _mod_revision,
29
31
    )
30
32
from bzrlib.decorators import needs_read_lock
 
33
from bzrlib.inventory import Inventory
31
34
from bzrlib.osutils import sha_file
32
35
from bzrlib.mutabletree import needs_tree_write_lock
33
36
from bzrlib.transport.memory import MemoryTransport
34
37
 
35
38
 
36
 
class MemoryTree(mutabletree.MutableTree):
 
39
class MemoryTree(mutabletree.MutableInventoryTree):
37
40
    """A MemoryTree is a specialisation of MutableTree.
38
41
 
39
42
    It maintains nearly no state outside of read_lock and write_lock
49
52
        self._locks = 0
50
53
        self._lock_mode = None
51
54
 
 
55
    def is_control_filename(self, filename):
 
56
        # Memory tree doesn't have any control filenames
 
57
        return False
 
58
 
52
59
    @needs_tree_write_lock
53
60
    def _add(self, files, ids, kinds):
54
61
        """See MutableTree._add."""
215
222
            self._parent_ids = []
216
223
        else:
217
224
            self._parent_ids = [self._branch_revision_id]
218
 
        self._inventory = self._basis_tree._inventory._get_mutable_inventory()
 
225
        self._inventory = Inventory(None, self._basis_tree.get_revision_id())
219
226
        self._file_transport = MemoryTransport()
220
227
        # TODO copy the revision trees content, or do it lazy, or something.
221
 
        inventory_entries = self._inventory.iter_entries()
 
228
        inventory_entries = self._basis_tree.iter_entries_by_dir()
222
229
        for path, entry in inventory_entries:
 
230
            self._inventory.add(entry.copy())
223
231
            if path == '':
224
232
                continue
225
233
            if entry.kind == 'directory':