~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/inventory.py

  • Committer: Aaron Bentley
  • Date: 2006-05-25 17:20:51 UTC
  • mfrom: (1731 +trunk)
  • mto: This revision was merged to the branch mainline in revision 1738.
  • Revision ID: abentley@panoramicfeedback.com-20060525172051-0f7bca5bc11e4173
MergeĀ fromĀ dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
993
993
        return entry
994
994
 
995
995
 
996
 
    def add_path(self, relpath, kind, file_id=None):
 
996
    def add_path(self, relpath, kind, file_id=None, parent_id=None):
997
997
        """Add entry from a path.
998
998
 
999
999
        The immediate parent must already be versioned.
1009
1009
            self._byid = {self.root.file_id: self.root}
1010
1010
            return
1011
1011
        else:
1012
 
            if file_id is None:
1013
 
                file_id = bzrlib.workingtree.gen_file_id(parts[-1])
1014
1012
            parent_path = parts[:-1]
1015
1013
            parent_id = self.path2id(parent_path)
1016
1014
            if parent_id == None:
1017
1015
                raise NotVersionedError(path=parent_path)
1018
 
        if kind == 'directory':
1019
 
            ie = InventoryDirectory(file_id, parts[-1], parent_id)
1020
 
        elif kind == 'file':
1021
 
            ie = InventoryFile(file_id, parts[-1], parent_id)
1022
 
        elif kind == 'symlink':
1023
 
            ie = InventoryLink(file_id, parts[-1], parent_id)
1024
 
        else:
1025
 
            raise BzrError("unknown kind %r" % kind)
 
1016
        ie = make_entry(kind, parts[-1], parent_id, file_id)
1026
1017
        return self.add(ie)
1027
1018
 
1028
 
 
1029
1019
    def __delitem__(self, file_id):
1030
1020
        """Remove entry by id.
1031
1021
 
1127
1117
        This returns the entry of the last component in the path,
1128
1118
        which may be either a file or a directory.
1129
1119
 
1130
 
        Returns None iff the path is not found.
 
1120
        Returns None IFF the path is not found.
1131
1121
        """
1132
1122
        if isinstance(name, types.StringTypes):
1133
1123
            name = splitpath(name)
1134
1124
 
1135
 
        mutter("lookup path %r" % name)
 
1125
        # mutter("lookup path %r" % name)
1136
1126
 
1137
1127
        parent = self.root
1138
1128
        for f in name:
1186
1176
        file_ie.parent_id = new_parent_id
1187
1177
 
1188
1178
 
 
1179
def make_entry(kind, name, parent_id, file_id=None):
 
1180
    """Create an inventory entry.
 
1181
 
 
1182
    :param kind: the type of inventory entry to create.
 
1183
    :param name: the basename of the entry.
 
1184
    :param parent_id: the parent_id of the entry.
 
1185
    :param file_id: the file_id to use. if None, one will be created.
 
1186
    """
 
1187
    if file_id is None:
 
1188
        file_id = bzrlib.workingtree.gen_file_id(name)
 
1189
    if kind == 'directory':
 
1190
        return InventoryDirectory(file_id, name, parent_id)
 
1191
    elif kind == 'file':
 
1192
        return InventoryFile(file_id, name, parent_id)
 
1193
    elif kind == 'symlink':
 
1194
        return InventoryLink(file_id, name, parent_id)
 
1195
    else:
 
1196
        raise BzrError("unknown kind %r" % kind)
 
1197
 
1189
1198
 
1190
1199
 
1191
1200
_NAME_RE = None