在mercurial中,什么是.hg \ store \ dh目录?

时间:2014-05-19 13:44:34

标签: mercurial

我注意到我的mercurial repos有一个.hg \ store \ dh目录。该目录的目的是什么?

另外,我注意到该目录中的目录名只有8个字符。这似乎是允许255个字符长度的目录名称的操作系统的问题。

斯蒂芬

1 个答案:

答案 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个字符不是问题,因为散列方法解决了歧义。