(BUP_NORMAL, BUP_CHUNKED) = (0,1)
-def demangle_name(name):
+def demangle_name(name, mode):
"""Remove name mangling from a file name, if necessary.
The return value is a tuple (demangled_filename,mode), where mode is one of
return (name[:-5], BUP_NORMAL)
elif name.endswith('.bup'):
return (name[:-4], BUP_CHUNKED)
+ elif name.endswith('.bupm'):
+ return (name[:-5],
+ BUP_CHUNKED if stat.S_ISDIR(mode) else BUP_NORMAL)
else:
return (name, BUP_NORMAL)
WVPASSEQ(git.mangle_name("f.bup", afile, adir), "f.bup.bup")
WVPASSEQ(git.mangle_name("f", afile, adir), "f.bup")
- WVPASSEQ(git.demangle_name("f.bup"), ("f", git.BUP_CHUNKED))
- WVPASSEQ(git.demangle_name("f.bupl"), ("f", git.BUP_NORMAL))
- WVPASSEQ(git.demangle_name("f.bup.bupl"), ("f.bup", git.BUP_NORMAL))
+ WVPASSEQ(git.demangle_name("f.bup", afile), ("f", git.BUP_CHUNKED))
+ WVPASSEQ(git.demangle_name("f.bupl", afile), ("f", git.BUP_NORMAL))
+ WVPASSEQ(git.demangle_name("f.bup.bupl", afile), ("f.bup", git.BUP_NORMAL))
+
+ WVPASSEQ(git.demangle_name(".bupm", afile), ('', git.BUP_NORMAL))
+ WVPASSEQ(git.demangle_name(".bupm", adir), ('', git.BUP_CHUNKED))
# for safety, we ignore .bup? suffixes we don't recognize. Future
# versions might implement a .bup[a-z] extension as something other
# than BUP_NORMAL.
- WVPASSEQ(git.demangle_name("f.bupa"), ("f.bupa", git.BUP_NORMAL))
+ WVPASSEQ(git.demangle_name("f.bupa", afile), ("f.bupa", git.BUP_NORMAL))
@wvtest
self._bupm = File(self, mangled_name, GIT_MODE_FILE, sha,
bupmode)
continue
- (name,bupmode) = git.demangle_name(mangled_name)
+ name, bupmode = git.demangle_name(mangled_name, mode)
if bupmode == git.BUP_CHUNKED:
mode = GIT_MODE_FILE
if stat.S_ISDIR(mode):