2010-07-27 76 views
12

我想恢復在某個提交中已被刪除的文件,並以不同的名稱恢復它,以便共享歷史記錄。在顛覆,我會做Mercurial:恢復文件

svn cp [email protected] dest 

即使用掛釘修訂。 Mercurial中的等效物是什麼?

+0

我不認爲hg可以直接跟蹤重命名文件的歷史記錄。有趣的問題,但。 – 2010-07-27 16:20:01

回答

7

我不認爲Mercurial有一個內置的方法來做到這一點。但我認爲你可以通過獲得同樣的效果:

hg up -C REV # Update to revision containing a copy of the file 
<modify the file in question> 
hg commit # Create second head based on old revision 
hg merge # Merge two heads into one 
# Note: make sure to choose to have the file exist 
hg commit 
hg mv MYFILE MYNEWNAME 

這將文件保存其所有古老的歷史,最好的水銀可以跟蹤它。

+1

在合併之前,我在新的未命名分支中完成了'mv',但最終結果是相同的。 – 2010-07-27 16:44:31

+0

這對我來說工作得很好,Ry4an的建議是將程序建議的文件移動到「<修改有問題的文件>」。 – 2010-07-28 14:31:18

7

將不僅僅(如果REV + 1你 「hg remove」 d SRC):

hg revert -rREV src 
hg status 
A src 
hg rename src dest 
hg commit -m"restored src and renamed it to dest" 

工作?

編輯:我剛測試它,它似乎沒問題。其實沒有「hg add」是src所必需的,因爲恢復正在照顧這一點。但是,如果你只是一個承諾,而不是兩個(如上面的代碼),HG將給出警告:

SRC尚未提交,因此沒有 拷貝數據將被保存到dest。

希望它能幫上忙。

+0

這將工作來恢復文件;它不允許同時重命名(因爲添加的文件不被視爲有歷史記錄)。但是,通過兩次提交,這也會起作用。 – 2010-07-28 14:36:32