2011-09-09 52 views
13

我已經繼承了一個Java項目,其中包含許多根據UpperCamelCase命名約定命名的類。Windows和Mercurial類名更改案例

特別是縮寫(例如HTMLButton而不是HtmlButton)。雖然我知道在使用帶縮寫詞的CamelCase方面存在一些意見分歧,但我們希望切換到僅使用大寫字母作爲縮寫的第一個字母。 (目前,似乎有幾個同時命名約定。)

我想整理一下。我們使用Mercurial作爲我們的源代碼存儲庫,並在Windows機器(包括XP,Vista,7)上工作。但是,如果將類名從HTMLButton更改爲HtmlButton,則Mercurial會將此類更改爲類名更改,但不會將其更改爲文件名。 (並且隨後任何從Mercurial中取出的文件名都不會改變。)

我知道Windows在不區分大小寫的文件系統上工作,並且我明白當接受來自Windows ...

因此...: - 有沒有一個設置可以讓Mercurial使用區分大小寫的文件名? - 我可以更改設置讓Windows使用區分大小寫的文件名嗎? (這些是單獨的問題,我的首要任務是讓Mercurial接受文件名更改,如有必要,我們可以在我們的IDE中手動強制執行文件重命名操作,但直接解決方案將是首選!)

(如果一切都失敗了,我可能會嘗試將HTMLButton重命名爲HtmlButtonA,提交併推送,並將HtmlButtonA重命名爲HtmlButton,然後執行另一個提交併推送...但是,我不確定如果某人對Windows文件名有什麼影響否則,只做第二推後拉...)

回答

20

如果你這樣做:

hg rename foo bar 
hg rename bar Foo 

你不需要真正的提交和推送,直到最後。換句話說,您的存儲庫不會意識到此特定於Windows的解決方法。

另一種選擇是重命名Windows中的文件,然後調用:

hg rename foo Foo --after 

通知變化的水銀。

來源:http://hgbook.red-bean.com/read/mercurial-in-daily-use.html#id364064

+0

感謝 - 我認爲雙重命名是我能做的最好的(至少我沒有做大量的提交/推)。這仍然有點乏味,但我想這就是生活...... – amaidment

+3

小心這樣做。我這樣做(沒有提交之間),現在我不能將該分支與另一個具有舊案例的分支合併...... :(我仍然在努力,但現在我還沒有找到一種方法來糾正這個問題我已經嘗試將它重新命名(在這一點上,我可以合併),然後回到新的情況下(再次胸圍),所以只要確保你可以與任何其他分支合併之前推到任何地方;) – GazB

+0

重命名後Visual Studio(更新csproj),在TortoiseHg(2.11.1)中,我右鍵單擊並選擇重命名。這似乎工作。我承諾,成功合併並推向另一個分支。 –