2013-12-13 55 views
16

我正在從一個Windows傢伙繼承的項目工作。它受Hg版本控制。它有一些不一致的文件名約定,我試圖解決這個問題,所以我將一個名爲jquery.fullpage.js的文件重命名爲jquery.fullPage.js(只是大寫的「P」),以堅持該jQuery庫的原始作者。Mercurial忽略文件重命名(更改大小寫)

但是,Hg不檢測作爲重命名或甚至刪除/創建文件的小寫字母大寫更改。因此,我無法承諾改變並推動它的發展。它在本地工作,但在我推送的遠程登臺服務器上,它會產生404錯誤。顯然,遠程文件沒有重新命名爲大寫P.我知道我可以通過刪除文件,提交,恢復文件和重命名,再次提交來解決這個問題,但似乎是一種粗暴的方式修復它。

我該如何解決這個問題?

回答

20

這是一個案例摺疊問題。嘗試通過Mercurial重命名該文件:hg rename jquery.fullpage.js jquery.fullPage.js

+0

這工作。我對這個解決方案並不滿意。雖然我已經閱讀了更多有關案例摺疊問題的內容,但它似乎是不區分大小寫的文件系統的問題。 – dashmug

+0

我用'mv',但它仍然沒有導致我運行'pull -uv'的系統重命名它。噢,我正在嘗試重命名[由其他答案](https://stackoverflow.com/a/28111220/429091)解決的文件夾/目錄。 – binki

0

如果你使用的是OS X並且你使用的是HFS,但是不區分大小寫,那麼Hg(也就是我發現的Git)將會接受這個改變。我使用Linux和我的同事使用OS X,並且我們與Git有類似的問題。進行中間重命名是一種解決方法,或者按照您的建議使用中間刪除。

我相信Jakub建議使用hg本身來實現重命名,但是我沒有嘗試過,因爲我沒有安裝hg。

+0

的確,我在OSX上。它沒有檢測到變化。遠程登臺服務器在Linux上,因此登臺服務器可以正常工作。 – dashmug

14

如果您正在重命名一個文件,您可以按照前面提到的hg rename進行更名。

但是(至少在的Windows),如果你是一個重命名文件夾然後你不能直接對其進行重命名。常用的解決方法是使用中間值:

hg rename Foo tmp 
hg rename tmp foo 

另一個解決方法是使用中間刪除。但是這是阻止,因爲你會失去文件的歷史。

+1

我需要在這兩個重命名之間進行提交嗎? – binki