我注意到我的mercurial repos有一个.hg \ store \ dh目录。该目录的目的是什么?
另外,我注意到该目录中的目录名只有8个字符。这似乎是允许255个字符长度的目录名称的操作系统的问题。
斯蒂芬
答案 0 :(得分:3)
dh
文件夹用于fncache
,以克服有限的文件名问题。根据找到的文档here,
所有经过哈希处理的路径都存储在目录“dh'内 ' .hg /存储&#39 ;.非散列路径存储在' .hg / store / data'。
中使用的散列是direncoded的sha1摘要(40个字符) 下面的路径' .hg / store',由mercurial.filelog.encodedir预编码。
对于hashencoded路径,前n个的前八个字符 获取目录级别(转换为小写),其中n是 如果空间允许,稍微适应使用更多级别(参见 store.hybridencode)。如果空间允许,则在哈希之前使用文件名 使用文件名中的小写转换字符填充值 输入路径。
如您所见,完成的路径编码可能会折叠多个文件 源自不同的输入路径目录到同一个 编码的路径目录。文件名的sha1摘要部分确保 文件名是不同的,不会发生名称冲突。
所以不,8个字符不是问题,因为散列方法解决了歧义。