~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/inventory.py

merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
81
81
    InventoryDirectory('123', 'src', parent_id='TREE_ROOT', revision=None)
82
82
    >>> i.add(InventoryFile('2323', 'hello.c', parent_id='123'))
83
83
    InventoryFile('2323', 'hello.c', parent_id='123', sha1=None, len=None)
84
 
    >>> shouldbe = {0: 'src', 1: pathjoin('src','hello.c')}
 
84
    >>> shouldbe = {0: '', 1: 'src', 2: pathjoin('src','hello.c')}
85
85
    >>> for ix, j in enumerate(i.iter_entries()):
86
86
    ...   print (j[0] == shouldbe[ix], j[1])
87
87
    ... 
 
88
    (True, RootEntry('TREE_ROOT', u'', parent_id=None, revision=None))
88
89
    (True, InventoryDirectory('123', 'src', parent_id='TREE_ROOT', revision=None))
89
90
    (True, InventoryFile('2323', 'hello.c', parent_id='123', sha1=None, len=None))
90
91
    >>> i.add(InventoryFile('2323', 'bye.c', '123'))
107
108
    ...     print path
108
109
    ...     assert i.path2id(path)
109
110
    ... 
 
111
    <BLANKLINE>
110
112
    src
111
113
    src/bye.c
112
114
    src/hello.c
310
312
        """
311
313
        fullpath = pathjoin(dest, dp)
312
314
        self._put_on_disk(fullpath, tree)
313
 
        mutter("  export {%s} kind %s to %s", self.file_id,
314
 
                self.kind, fullpath)
 
315
        # mutter("  export {%s} kind %s to %s", self.file_id,
 
316
        #         self.kind, fullpath)
315
317
 
316
318
    def _put_on_disk(self, fullpath, tree):
317
319
        """Put this entry onto disk at fullpath, from tree tree."""
408
410
        This means that all its fields are populated, that it has its
409
411
        text stored in the text store or weave.
410
412
        """
411
 
        mutter('new parents of %s are %r', path, previous_entries)
 
413
        # mutter('new parents of %s are %r', path, previous_entries)
412
414
        self._read_tree_state(path, work_tree)
413
415
        # TODO: Where should we determine whether to reuse a
414
416
        # previous revision id or create a new revision? 20060606
416
418
            # cannot be unchanged unless there is only one parent file rev.
417
419
            parent_ie = previous_entries.values()[0]
418
420
            if self._unchanged(parent_ie):
419
 
                mutter("found unchanged entry")
 
421
                # mutter("found unchanged entry")
420
422
                self.revision = parent_ie.revision
421
423
                return "unchanged"
422
424
        return self._snapshot_into_revision(revision, previous_entries, 
433
435
 
434
436
        :returns: String description of the commit (e.g. "merged", "modified"), etc.
435
437
        """
436
 
        mutter('new revision {%s} for {%s}', revision, self.file_id)
 
438
        # mutter('new revision {%s} for {%s}', revision, self.file_id)
437
439
        self.revision = revision
438
440
        self._snapshot_text(previous_entries, work_tree, commit_builder)
439
441
 
840
842
    May also look up by name:
841
843
 
842
844
    >>> [x[0] for x in inv.iter_entries()]
843
 
    [u'hello.c']
 
845
    ['', u'hello.c']
844
846
    >>> inv = Inventory('TREE_ROOT-12345678-12345678')
845
847
    >>> inv.add(InventoryFile('123-123', 'hello.c', ROOT_ID))
846
848
    InventoryFile('123-123', 'hello.c', parent_id='TREE_ROOT-12345678-12345678', sha1=None, len=None)
867
869
 
868
870
    def copy(self):
869
871
        # TODO: jam 20051218 Should copy also copy the revision_id?
870
 
        other = Inventory(self.root.file_id)
 
872
        entries = self.iter_entries()
 
873
        other = Inventory(entries.next()[1].file_id)
871
874
        # copy recursively so we know directories will be added before
872
875
        # their children.  There are more efficient ways than this...
873
 
        for path, entry in self.iter_entries():
874
 
            if entry == self.root:
875
 
                continue
 
876
        for path, entry in entries():
876
877
            other.add(entry.copy())
877
878
        return other
878
879
 
888
889
        if from_dir is None:
889
890
            assert self.root
890
891
            from_dir = self.root
 
892
            yield '', self.root
891
893
        elif isinstance(from_dir, basestring):
892
894
            from_dir = self._byid[from_dir]
893
895
            
940
942
        if from_dir is None:
941
943
            assert self.root
942
944
            from_dir = self.root
 
945
            yield '', self.root
943
946
        elif isinstance(from_dir, basestring):
944
947
            from_dir = self._byid[from_dir]
945
948