2014-05-19 87 views
1

我注意到我的mercurial回購有一個.hg \ store \ dh目錄。該目錄的目的是什麼?在mercurial中,什麼是.hg store dh目錄?

此外,我注意到該目錄中的目錄名稱只有8個字符。這似乎是一個操作系統上允許255個字符長度的目錄名稱的問題。

斯蒂芬

回答

3

dh文件夾用於fncache,克服了有限的文件名的問題。基於文檔發現here

被散列被存儲在目錄「DH」內部 「.hg /存儲」的所有路徑。非哈希路徑存儲在'.hg/store/data'內。

使用的散列是經過mercode.filelog.encodedir預編碼的'.hg/store'下的直接編碼的 路徑的sha1摘要(40個字符)。

對於hashencoded路徑,第一n 目錄層次的前8個字符截取(轉換爲小寫),其中n是 稍微適應如果空間允許使用更多的水平(見 store.hybridencode)。如果空間允許,則在輸入路徑的文件名 中填充散列 值之前的文件名以填充小寫轉換後的字符。

正如你所看到的,可以進行摺疊多個文件,從不同的輸入路徑的目錄 始發到同一 編碼的路徑目錄的路徑編碼。文件名的sha1摘要部分確保 文件名不同,並且不會發生名稱衝突。

因此不,8個字符不是問題,因爲散列方法解決了含糊問題。

相關問題