2012-04-22 72 views
6

我已經重新命名了分支在回購和不小心保持與同一工作副本(重命名之前從該分支檢出)工作。當我後來嘗試提交時,我注意到工作副本仍然針對舊路徑。我希望將更改提交到回購中的新路徑,同時保留歷史記錄等等。SVN:重新命名在Repo瀏覽器,同時保持工作副本同步

SVN是否有優雅的解決方法?

我讀了關於命令切換和重新定位,但我不確定它們中的任何一個都完全適合我的問題(描述的場景不同),並且我一直有點害怕嘗試使用SVN中的命令。有沒有人有這些命令的經驗?

我想我可以解決這個問題,例如,檢查重命名的項目到另一個工作副本,然後用改變覆蓋它(除了SVN元數據之外)。我也可以編寫一些腳本來查找所有舊路徑的出現,並將它們粗暴地改變爲新路徑,但是我發現必須有某種類型的SVN命令。

謝謝!

回答

6

如果版本庫URL更改,您需要重新定位您的工作副本。 開關命令用於更改您的工作副本指向的分支。這些概念本身很清楚。

但是你說的項目我想這就是你面臨的問題:你不會在Subversion文檔中找到任何對項目的引用,因爲這不是Subversion的概念。

這裏有兩種基本的方法來實現在Subversion中的項目:

  1. 創建每個項目庫:

    • https://example.com/svn/foo/trunk
    • https://example.com/svn/bar/trunk
  2. 創建一個分支每個項目在相同的回購sitory:

    • https://example.com/svn/projects/foo/trunk
    • https://example.com/svn/projects/bar/trunk

所以,當你說 「重命名項目」 你的意思是不是 「重命名庫」(#1)或 「重命名一個分支」( #2)並且解決方案是:

  1. svn relocate將您的工作副本再次鏈接到存儲庫
  2. 無論是svn update帶來的改變你的工作拷貝(如果變化是工作拷貝目錄樹中)或svn switch改變分支的工作拷貝(如果你有效去除當前分支)。

更新:我的建議到目前爲止是你從頭開始。重新命名你當前的工作副本,檢查一個新的工作副本,並使用像WinMerge或Kdiff3(或TortoiseMerge)這樣的常規文件比較工具重新應用等待更改。如果從日誌中看不出明顯的變化,試圖找出確切的變化是沒有好處的。

對於未來......你並不需要學習由心臟徹底顛覆書,但你應該瞭解的基本概念,ESP。當他們在日常工作中證明是一個問題時。

+0

嗯,我只是在回購樹中重新命名了一個「目錄」,這可能意味着我已經重新命名了一個分支(對不起,我是這個的noob)。 – myDisplayName 2012-04-22 16:42:58

+0

關於svn重定位,它聽起來是最合適的操作,但我沒有更改整個存儲庫的URL - 只更名爲分支 - 它仍然能夠正常工作嗎? – myDisplayName 2012-04-22 16:52:02

+0

我也不確定關於svn開關 - 請記住我已經對我想提交的工作副本進行了更改,並且我擔心Update和Switch之間的關係 - 將svn切換還原我在工作副本?如果原始分支名稱不再存在,它甚至可以工作嗎?像往常一樣保存日誌歷史記錄嗎? – myDisplayName 2012-04-22 17:15:59

0

您是否嘗試過使用svn開關..

switch --relocate OLDURL TO NEWURL 

這應該解決您的問題。

+0

謝謝,但我怕用這個,因爲我只在我的資料庫改名爲一個分支,所以我不知道這適合在您使用此命令的推薦的方案... – myDisplayName 2012-04-23 16:10:25

+0

可能是你可以簡單地使用一個簡單的svn開關NEWURL。 – khmarbaise 2012-04-24 10:16:58