1

我們有三個環境或網站(dev,staging和production),其上運行我們的ASP.NET應用程序的一個版本。 我們使用SVN和持續集成(Teamcity)來幫助自動將應用程序部署到每個Web服務器。基於並行任務的開發的分支策略

我們目前的開發流程是基於任務(或工單)系統。 開發人員需要完成一項任務。 許多開發人員可以同時在項目上工作,但在應用程序的不同部分。

我現在的解決方案使開發人員爲每個任務創建單獨的分支。 當用戶提交中繼源代碼被編譯並部署到我們的開發Web服務器。

開發人員1開始一個新任務,並從幹線源代碼創建一個新分支,讓我們說「任務1」。

他將他的代碼提交給他的分支,然後合併分支和主幹。

他的更改將與其餘代碼一起編譯並部署到開發Web服務器。

開發人員2開始一個新的任務,並從幹線創建一個分支(與Dev 1的變化)。

然後,他進行更改,將其代碼提交給「任務2」,並將分支與主幹合併。

該代碼再次編譯並部署到開發Web服務器。

開發者1尚未完成,但開發人員2已做好的更改已準備好部署到生產中。

Dev 2然後將「任務2」與「生產」分支合併。

這就是問題所在。開發者1所做的一部分更改正在生產中,這是一件壞事。

我需要找到一個分支策略,使我們能夠繼續開發並逐一實施每項任務。

你有什麼建議嗎? SVN是這份工作的正確工具嗎?

UPDATE

我現在想做出「開發」分支部署到我們的開發服務器,並保持軀幹乾淨,與我們的「生產」分支同步的。這個特殊的問題似乎總是這樣,因爲每個開發人員都會從乾淨的主幹創建他的分支,而不是一些開發人員的修改。

回答

1

我讀完你的問題後有點困惑。如果開發者1還沒有完成,並且還沒有準備好將他的先前修改編譯並部署到生產環境中,那麼將任務1合併到主幹並不是一個好主意。

怎麼樣:每個開發者創建他/她自己的分支「任務我」。然後,他們可以同時在分支上工作。做檢查,檢查等。完成任務後,他們可以將他們的支架合併回主幹。這樣,您就可以確保生產服務器上的項目已完成,而不是作業的一部分。

+0

要完成測試,每個開發人員都必須將其更改部署到開發人員服務器(通過幹線),因爲我們的應用程序主要內置在經典的ASP中。 – Jason

+0

創建Dev分支也是一種解決方法。 – Windy