2012-09-19 99 views
3

我目前面臨以下情況:SVN多個分支與「相關性」

我有一個SVN倉庫與軀幹,一些開發商繼續添加代碼(如它應該)

然後我們有不同的分支(見圖片)p1_test(測試系統)和p1_live(生產系統)。

我們想要的過程是每隔X天從幹線(進程v¹)更新p1_test分支。 然後從p1_test的工作副本中的「真實文件」將被更新(v²)。

系統p1_test未通過測試,且每個錯誤修正已(或應該)提交給p1_test分支,且p1_test系統已更新(v²再次)。 與此同時,其他不參與p1-cycle的開發人員將繼續添加到主幹中。這些更改應該而不是被集成到p1_test分支(尚)。

最後(當p1_test)被認爲是穩定的時,應該從p1_test分支更新分支p1_live,並且對p1_test所做的所有更改應重新集成到主幹(v³)。

在給定的時間點v 4被執行,意味着p1_live的工作副本從p1_live分支更新。

即使所有的東西都應該經過良好的測試,我們必須有選項來「修補」p1_live上嚴重錯誤的任何東西。在這種情況下,直接對p1_live分支進行更改,並從該分支更新系統(v 5)。

該過程必須與未知數量的pX_test和pX_live系統並行工作。

Svn Branching Schema

是這甚至可能使用SVN? 目前我面臨着不少版本號衝突等問題。

有沒有版本控制系統可以讓我按照給定的程序?

親切的問候, Timetrick

回答

4

我們使用Subversion與類似的使用方式,你一個大活躍的代碼庫。我們有標準的中繼/分支/標籤基礎層次結構。在分支機構中,我們有unstable,testingstable。我們也有分支文件夾中每個用戶名的文件夾的「用戶」分支。標籤正是他們應該如何:一個不可觸摸的快照。

trunk 

branches/unstable 
branches/testing 
branches/stable 
branches/userA/branch1 
branches/userA/branch2 
... 

tags/stable/rNNNN 
tags/stable/vN.N.N.N 
... 
  • 隨着使用Subversion所有我的經驗,我發現它的作品這麼多 更好,如果代碼中一個方向流動。 例外是從中繼創建分支,當分支完成時(通常稱爲「重新集成」分支),當然可以合併 更改回中繼。
  • 如果代碼不能在一個方向上流動,那麼它必須至少保留一條路徑。 例如,這意味着分支的一個分支不應該直接重新集成到 中繼線中。
  • 我們的使用模式表明,所有活動的開發(包括bug修復, 總是首先進入主幹,然後主幹爲不穩定,測試和穩定分支的更新提供者 )。 (這也將是沒關係 遵循trunk -> unstable -> testing -> stable合併路徑,但我們不 由於具體到我們的測試/發佈過程的原因。)
  • 如果你有一個特定分支的修復程序,然後使它那裏,不打算把 合併回主幹。我的經驗發現, 意外地有一個無辜的分支更新中斷代碼,或者甚至從 幹線,但沒有提供給分支,但仍然是代碼。

你可以從我的觀點收集了Subversion需要一個過程,只要你想(和我們一樣的)要真正有效地使用它,並避免那些奇怪的衝突中離開你說:「現在怎麼辦?」您所描述並試圖弄清的所有內容聽起來對我來說都非常熟悉Subversion。

我經常考慮如果像Git或Mercurial這樣的DVCS工具沒有這些問題(在所有?? ??)的宣傳值得花費時間來遷移我們的知識庫(數百個)。阻止我嘗試的唯一因素是時間限制,但是您可以更好地嘗試其中一種工具。