~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/inventory.py

  • Committer: Robert Collins
  • Date: 2006-06-13 12:55:45 UTC
  • mfrom: (1757.2.16 add)
  • mto: This revision was merged to the branch mainline in revision 1769.
  • Revision ID: robertc@robertcollins.net-20060613125545-cc77adde61a471bf
Merge add performance improvements.

Show diffs side-by-side

added added

removed removed

Lines of Context:
123
123
    RENAMED = 'renamed'
124
124
    MODIFIED_AND_RENAMED = 'modified and renamed'
125
125
    
126
 
    __slots__ = ['text_sha1', 'text_size', 'file_id', 'name', 'kind',
127
 
                 'text_id', 'parent_id', 'children', 'executable', 
128
 
                 'revision']
 
126
    __slots__ = []
129
127
 
130
128
    def detect_changes(self, old_entry):
131
129
        """Return a (text_modified, meta_modified) from this to old_entry.
319
317
        raise BzrError("don't know how to export {%s} of kind %r" % (self.file_id, self.kind))
320
318
 
321
319
    def sorted_children(self):
322
 
        l = self.children.items()
323
 
        l.sort()
324
 
        return l
 
320
        return sorted(self.children.items())
325
321
 
326
322
    @staticmethod
327
323
    def versionable_kind(kind):
341
337
        :param inv: Inventory from which the entry was loaded.
342
338
        :param tree: RevisionTree for this entry.
343
339
        """
344
 
        if self.parent_id != None:
 
340
        if self.parent_id is not None:
345
341
            if not inv.has_id(self.parent_id):
346
342
                raise BzrCheckError('missing parent {%s} in inventory for revision {%s}'
347
343
                        % (self.parent_id, rev_id))
499
495
 
500
496
class RootEntry(InventoryEntry):
501
497
 
 
498
    __slots__ = ['text_sha1', 'text_size', 'file_id', 'name', 'kind',
 
499
                 'text_id', 'parent_id', 'children', 'executable', 
 
500
                 'revision', 'symlink_target']
 
501
 
502
502
    def _check(self, checker, rev_id, tree):
503
503
        """See InventoryEntry._check"""
504
504
 
520
520
class InventoryDirectory(InventoryEntry):
521
521
    """A directory in an inventory."""
522
522
 
 
523
    __slots__ = ['text_sha1', 'text_size', 'file_id', 'name', 'kind',
 
524
                 'text_id', 'parent_id', 'children', 'executable', 
 
525
                 'revision', 'symlink_target']
 
526
 
523
527
    def _check(self, checker, rev_id, tree):
524
528
        """See InventoryEntry._check"""
525
 
        if self.text_sha1 != None or self.text_size != None or self.text_id != None:
 
529
        if self.text_sha1 is not None or self.text_size is not None or self.text_id is not None:
526
530
            raise BzrCheckError('directory {%s} has text in revision {%s}'
527
531
                                % (self.file_id, rev_id))
528
532
 
563
567
class InventoryFile(InventoryEntry):
564
568
    """A file in an inventory."""
565
569
 
 
570
    __slots__ = ['text_sha1', 'text_size', 'file_id', 'name', 'kind',
 
571
                 'text_id', 'parent_id', 'children', 'executable', 
 
572
                 'revision', 'symlink_target']
 
573
 
566
574
    def _check(self, checker, tree_revision_id, tree):
567
575
        """See InventoryEntry._check"""
568
576
        t = (self.file_id, self.revision)
607
615
 
608
616
    def detect_changes(self, old_entry):
609
617
        """See InventoryEntry.detect_changes."""
610
 
        assert self.text_sha1 != None
611
 
        assert old_entry.text_sha1 != None
 
618
        assert self.text_sha1 is not None
 
619
        assert old_entry.text_sha1 is not None
612
620
        text_modified = (self.text_sha1 != old_entry.text_sha1)
613
621
        meta_modified = (self.executable != old_entry.executable)
614
622
        return text_modified, meta_modified
699
707
class InventoryLink(InventoryEntry):
700
708
    """A file in an inventory."""
701
709
 
702
 
    __slots__ = ['symlink_target']
 
710
    __slots__ = ['text_sha1', 'text_size', 'file_id', 'name', 'kind',
 
711
                 'text_id', 'parent_id', 'children', 'executable', 
 
712
                 'revision', 'symlink_target']
703
713
 
704
714
    def _check(self, checker, rev_id, tree):
705
715
        """See InventoryEntry._check"""
706
 
        if self.text_sha1 != None or self.text_size != None or self.text_id != None:
 
716
        if self.text_sha1 is not None or self.text_size is not None or self.text_id is not None:
707
717
            raise BzrCheckError('symlink {%s} has text in revision {%s}'
708
718
                    % (self.file_id, rev_id))
709
719
        if self.symlink_target is None:
1024
1034
        except KeyError:
1025
1035
            raise BzrError("parent_id {%s} not in inventory" % entry.parent_id)
1026
1036
 
1027
 
        if parent.children.has_key(entry.name):
 
1037
        if entry.name in parent.children:
1028
1038
            raise BzrError("%s is already versioned" %
1029
1039
                    pathjoin(self.id2path(parent.file_id), entry.name))
1030
1040
 
1109
1119
 
1110
1120
    def _iter_file_id_parents(self, file_id):
1111
1121
        """Yield the parents of file_id up to the root."""
1112
 
        while file_id != None:
 
1122
        while file_id is not None:
1113
1123
            try:
1114
1124
                ie = self._byid[file_id]
1115
1125
            except KeyError: