2013-05-13 169 views
1

我想知道從文件系統(例如通過Windows資源管理器)刪除跟蹤文件時是否有任何後果與使用hg remove刪除從文件中刪除時相比系統並且解開它。從文件系統刪除跟蹤文件vs hg刪除

在這兩種情況下,我都會承諾,只是在第一種情況下龜HG將文件標記爲缺少感嘆號,第二個標記爲乾淨並準備刪除。

除此之外,還有什麼區別嗎?

回答

2

如果你的文件系統路徑,不作任何其他更改跟蹤文件,汞會給你一個錯誤,當您嘗試提交:

nothing changed (1 missing files, see 'hg status') 

(這是一個特例nothing changed。)

如果您更改了其他內容,hg不會在此時發生抱怨,但該文件的狀態將繼續顯示爲缺少hg status。這會給你的(精神)工作空間帶來負面影響,並且很難一目瞭然地知道你的工作目錄的當前狀態。此外,該文件將保留在存儲庫中,並且將會被hg update恢復爲仍然被跟蹤的任何修訂!

hg remove如果文件已經從文件系統中刪除,將返回一個錯誤;在這種情況下,您應該使用hg forget來通知Mercurial停止跟蹤文件。

如果您喜歡使用外部實用程序(如Windows資源管理器)做出重大更改,則可以使用自動檢測添加和刪除的漂亮hg addremove。 (缺點是,你可能會刪除和不記錄被意外刪除的文件。)

+0

如果你使用'hg remove',該文件也會保留在版本庫中(對於早期版本)。只有更高版本受到影響。 – alexis 2013-05-16 11:23:45

+0

@alexis:是的,當然,該文件會保留在歷史記錄中,並且會在所有仍在追蹤它的變更集中「重新出現」。 「hg remove」只能繼續前進;它不會改變歷史。 – Livius 2013-05-16 11:30:11