2012-09-07 36 views
4

我使用Subversion與其他應用程序管理的某些文件。我想重命名這些文件,但重命名必須在應用程序內完成,以便正確更新它自己的元數據。這意味着我不能簡單地使用SVN的rename命令 - 應用程序的元數據將變得不一致。如何告訴SVN文件被另一個工具重命名?

那麼,我該如何告訴SVN工作副本中的文件已被此應用程序重命名,以便它按照rename命令的相同方式保留歷史記錄?

回答

1

你可以模擬事後「記錄只有」重命名類似

rename newname oldname 
svn rename oldname newname 

,以保障您的應用程序可能會在文件中所做的任何更改,但允許SVN使之間的連接「舊名」和「新名」的歷史。

+0

在我的測試中,這不起作用。但請參閱下面涉及TortoiseSVN的解決方案。 –

+0

我收到錯誤「路徑...不是目錄」。 –

+0

@ShaunLuttin和其他人:首先確保目錄是版本/添加的。 – Darsstar

0

我不認爲你可以用目前的SVN做到這一點。 svn rename命令的原因實際上是因爲你必須告訴svn重命名是關於什麼的,以便它可以準備相應的元數據。除非svn將其設計更改爲「猜測」你的重命名(比如git),或者它提供了一個只記錄元數據的更新命令(你仍然需要弄清楚什麼重命名你的應用程序實際完成了什麼,發出相應的命令)。但是這個功能都不可用,至少在不久的將來也不太可能發生

+0

是後者那我以後 - 我知道重命名操作將是什麼,但是我要告訴SVN記錄他們在完成其他應用程序之後。 – detly

0

據我所知,SVN cli沒有這個功能,但是SmartSVN沒有(你選擇2個文件並按Move) 。

7

你沒有指定你的環境,但是如果你在Windows上,TortoiseSVN提供了一個鮮爲人知並且相當優雅的解決方案。假設您有一個文件SuiteSetup.cs,您可以在應用程序中將其重命名爲SuiteSetup-Rev2.cs。

在任TortoiseSVN的上下文菜單上提交檢查修改對話框中,選擇舊名稱(顯示missing狀態)和新名稱(顯示non-versioned狀態),然後打開上下文菜單並選擇修理搬(參考:Repairing File Renames)。如圖所示,TortoiseSVN執行所有簿記更正,將其轉換爲鏈接的刪除 - 添加對,即重命名或移動應該出現的方式。

[改編自我的TortoiseSVN and Subversion Cookbook, part 2,發表在Simple-Talk.com上。在寫作部分的時間8只是即將出版]

repairing a file move

+0

我給出了更廣泛適用的答案,但這也非常好。我之前並不知道這個功能! – detly

相關問題