2010-01-19 153 views
3

由於我們的SVN倉庫管理不善,我們最終創建了一個名爲Stable的分支,其中包含我們代碼的穩定版本(分支實際上是從最後一個版本的標籤開始的,而不是中繼)。SVN:我如何將一個分支移動到另一個分支的頂部?

基本上,由於我們的新程序員發生了一些變化,他們並沒有真正知道他們在幹什麼,基本上幹線已經'感染'了。

我想要實現的是將穩定分支作爲主幹,丟棄自分支發生以來的所有這些更改,但是我需要確保保留所有歷史預分支。

該分支是否包含分支發生之前的所有歷史記錄? (在這種情況下,我認爲我可以移動樹枝成爲樹幹?)

所有教程我可以找到關於合併的討論..但我很緊張,因爲如果我的理解是正確的,如果有變化在沒有發生衝突的後備箱中,我會在穩定的版本中結束這些。

所以問題是什麼是這種情況的最佳選擇?

在此先感謝您的意見!

回答

2

在你的情況下,我會建議使用合併回滾你的樹幹上的變化。您可以按照與使用trunk作爲合併的源和目標的合併命令相反的順序指定修訂號。例如,在爲主幹的工作目錄(請注意,你可能更願意使用庫URL):

svn merge [email protected] [email protected] . 

將回滾從版本X修訂Y.所做的更改還請注意,SVN合併命令有一個--dry-run選項,以便您可以在實際進行任何更改之前驗證要執行的操作。

請記住,您使用版本控制的原因之一是,您可以保留更改的歷史記錄並在必要時將其回滾。即使你現在不這麼認爲,幹線上的錯誤承諾也許是你將來想要提及的。

+0

接受此回滾似乎是最明智的選擇,只是因爲我們需要這些更改。謝謝! – rcknight 2010-01-19 11:55:34

2

是的,該分支包含複製之前的所有歷史記錄...所以您可以刪除當前的主幹,並將分支複製或重命名爲主幹,並且您應該很好。

svn log --help

每個日誌信息只會打印一次,即使是明確要求爲修訂中涉及到的不止一個。日誌默認遵循複製歷史記錄。使用-stop-on-copy禁用此行爲,這對確定分支點很有用。

1

有幾個選項:

  1. 您可以move您在SVN的目錄,如果(幾乎)你組織你的本地目錄。所有的歷史將被保留。 (這當然會包括你的'移動')

  2. 如果你想讓倉庫進入一個錯誤狀態,那麼你可以使用administration features來刪除不需要的變更集和將它們手動添加到適當的位置。這可能是乏味的,如果他們在其他地方被引用,您可能需要查看您的修訂版本號。

在此期間,我建議與團隊決定strategy避免混淆。

0

我喜歡你描述這個程序員的變化的方式。所以,如果:

  • 你真的真的很討厭這樣的程序員,想刪除他的所作所爲的所有痕跡
  • 您必須將倉庫

管理權限,你可以嘗試非常仔細到做一個svnadmin dump -rX:Y轉儲回購,直到被感染的版本,刪除當前的回購,並恢復它與沒有感染之一。

相關問題