2011-08-25 101 views
2

這不是一個獨特的問題,過去並不存在,但沒有任何解決方案對我有幫助。Mercurial案例摺疊問題

我的情況 - 由Perforce(由我公司的中央SCM)團隊維護的一個巨大的存儲庫。現在他們改變了一些東西,所有的團隊管理他們自己的SCM,並使用主要perforce僅用於定期更新(不要問我爲什麼 - 我沒有發言權)

但是我的問題 - 我們轉移到Mercurial for我們團隊的項目。

它的巨大 - 約300k文件和跨平臺編譯。

我設置的mercurial repo與Linux運行良好,但在Windows上,我得到了案例摺疊錯誤,無法簽出或克隆回購。

我從https://www.mercurial-scm.org/wiki/CaseFolding

嘗試過的解決方案,結果看起來像這樣

  1. hgfold擴展 - 不工作 - 它會拋出一些未知的Python異常,有人面對這個問題,的維護者擴展意識到它,但沒有立即修復。

  2. 不可能簡單地重命名這些文件,我們的repo會中斷,我必須使用相同的文件名,並且在linux中它工作得很好並且正在使用。所以我不知道重命名是一種選擇。

  3. Perforce處理得很好,但正如我所說我在這裏沒有發言權。

那麼還有其他出路嗎? SVN可以很好地處理案例嗎?任何幫助對我都很有用。

+0

你真的需要摺疊箱嗎?只要你沒有名字不同的文件,你就不必擔心它。 – Ringding

+0

Perforce在摺疊的情況下也不能處理衝突,因爲沒有解決方法如何自動執行此操作。正如@Ringding已經正確地提到你只有在發生衝突時才需要摺疊。但如果有衝突,你必須修復它們,如果你想工作在不區分大小寫OS –

+0

@Ringding - 是的,我確實有衝突,事實上很多在我們的倉庫。它最初由Perforce管理。 – devgp

回答

2

有在水銀書章一章Case sensitivity

只要找到附近的一個Linux或Unix中,克隆問題庫 到它,並使用水銀的汞重命名命令來改變 名稱的任何有問題的文件或目錄,以便它們不會再導致案例摺疊衝突。提交此更改,hg pull或hg將其推送到您的Windows或MacOS系統,並將hg更新到帶有非衝突名稱的修訂版 。

問題是沒有真正的工作自動方式來解決案件衝突。文件名通常在Makefiles等其他文件中引用,或者在源文件中包含語句或配置文件讀取。所以任何自動解決這個問題的方法都容易造成破壞。

從以上章節的一些技巧的評論:

格蘭特貝利2009-08-13在Mac上,你也可以做這種修復您的 計算機上通過創建包含的情況下,磁盤映像敏感 文件系統。啓動磁盤工具(在/ Applications/Utilities中),點擊 文件 - >新建 - >空白磁盤映像...,並選擇「Mac OS Extended (Journaled,區分大小寫)」作爲卷格式。

,你可以使用

find . -print | sort -f | uniq -di 

上區分大小寫的文件系統中發現的情況下,衝突的所有文件名。