~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/bzrdir.py

 * New ``versionedfile.KeyMapper`` interface to abstract out the access to
   underyling .knit/.kndx etc files in repositories with partitioned
   storage. (Robert Collins)

Show diffs side-by-side

added added

removed removed

Lines of Context:
43
43
    graph,
44
44
    lockable_files,
45
45
    lockdir,
 
46
    osutils,
46
47
    registry,
47
48
    remote,
48
49
    revision as _mod_revision,
2240
2241
                if (filename.endswith(".weave") or
2241
2242
                    filename.endswith(".gz") or
2242
2243
                    filename.endswith(".sig")):
2243
 
                    file_id = os.path.splitext(filename)[0]
 
2244
                    file_id, suffix = os.path.splitext(filename)
2244
2245
                else:
2245
2246
                    file_id = filename
2246
 
                prefix_dir = store.hash_prefix(file_id)
 
2247
                    suffix = ''
 
2248
                new_name = store._mapper.map((file_id,)) + suffix
2247
2249
                # FIXME keep track of the dirs made RBC 20060121
2248
2250
                try:
2249
 
                    store_transport.move(filename, prefix_dir + '/' + filename)
 
2251
                    store_transport.move(filename, new_name)
2250
2252
                except errors.NoSuchFile: # catches missing dirs strangely enough
2251
 
                    store_transport.mkdir(prefix_dir)
2252
 
                    store_transport.move(filename, prefix_dir + '/' + filename)
 
2253
                    store_transport.mkdir(osutils.dirname(new_name))
 
2254
                    store_transport.move(filename, new_name)
2253
2255
        self.bzrdir._control_files.put_utf8('branch-format', BzrDirFormat6().get_format_string())
2254
2256
 
2255
2257