Allow empty foldernames
Empty foldernames (as they could be created through nametrans) were failing as the uidvalidity and status files names as determined by folder/Base.py:getfolderbasename() lead to invalid file names ''. Fix this by handling empty file names and translating them to '.' which leads to the special file name 'dot'. (this special value existed before and was not invented by this patch) Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de> Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
This commit is contained in:

committed by
Nicolas Sebrecht

parent
4f1cd05fdc
commit
373e7cdbc1
@ -72,11 +72,15 @@ class BaseFolder(object):
|
||||
return self.getname()
|
||||
|
||||
def getfolderbasename(self):
|
||||
foldername = self.getname()
|
||||
foldername = foldername.replace(self.repository.getsep(), '.')
|
||||
foldername = re.sub('/\.$', '/dot', foldername)
|
||||
foldername = re.sub('^\.$', 'dot', foldername)
|
||||
return foldername
|
||||
"""Return base file name of file to store Status/UID info in"""
|
||||
if not self.name:
|
||||
basename = '.'
|
||||
else: #avoid directory hierarchies and file names such as '/'
|
||||
basename = self.name.replace('/', '.')
|
||||
# replace with literal 'dot' if final path name is '.' as '.' is
|
||||
# an invalid file name.
|
||||
basename = re.sub('(^|\/)\.$','\\1dot', basename)
|
||||
return basename
|
||||
|
||||
def isuidvalidityok(self):
|
||||
"""Does the cached UID match the real UID
|
||||
|
@ -28,7 +28,7 @@ class LocalStatusFolder(BaseFolder):
|
||||
self.root = root
|
||||
self.sep = '.'
|
||||
self.config = config
|
||||
self.filename = repository.getfolderfilename(name)
|
||||
self.filename = os.path.join(root, self.getfolderbasename())
|
||||
self.messagelist = {}
|
||||
self.repository = repository
|
||||
self.savelock = threading.Lock()
|
||||
|
@ -115,7 +115,7 @@ class LocalStatusSQLiteFolder(LocalStatusFolder):
|
||||
plaintextfilename = os.path.join(
|
||||
self.repository.account.getaccountmeta(),
|
||||
'LocalStatus',
|
||||
re.sub('(^|\/)\.$','\\1dot', self.name))
|
||||
self.getfolderbasename(self.name))
|
||||
# MIGRATE from plaintext if needed
|
||||
if os.path.exists(plaintextfilename):
|
||||
self.ui._msg('Migrating LocalStatus cache from plain text '
|
||||
|
Reference in New Issue
Block a user