2009-12-22 51 views
0

我們有5個開發人員在svn環境中工作。每個程序員都可以處理小錯誤並隨時提交。 工作完成後,我想給他們部署到生產的方式,而不考慮其他程序員及其部署。例如: : 當我提交時,其他用戶也在提交,但他沒有完成提交。 他的修訂1,3 我的修訂2,4從svn回購部署的方式

如果我將部署HEAD(4),生病也部署他的工作。 ,我會部署2和4我也會包括他的文件。

我該如何釋放每個程序員才能部署他的文件?

謝謝

+4

你是什麼意思,「他沒有完成承諾」?提交是原子操作,它們完全成功,或者什麼也沒有發生。修改號碼將在您提交後分配。 – 2009-12-22 15:59:12

回答

0

這真的取決於您的部署方法。如果您在生產中保留版本化的代碼樹,也就是說,您在生產機器上執行了svn checkout,那麼最簡單的方法是讓程序員在生產時簡單地使用svn update --revision REV,其中REV是程序員希望的修訂版本更新。

但是,這種方法很容易出現人爲錯誤。

如果每個程序員都需要一直上傳不同版本的程序,而不需要上傳其他程序員的代碼,那麼我會爲每個程序員設置自己的分支。程序員可以隨時登記到他們自己的分支,並且當它準備好投入生產時,他們可以將分支合併回主幹(或另一個發佈分支),並且主幹可以通過svn exportsvn update複製到生產。這種過程被用來保證你在任何時候都有一個工作的發佈版本,如果你有程序員習慣於檢查沒有完成的代碼(即在每天結束時),那麼這個過程特別有用。

0

我認爲你想要做的是隔離部署的一些變化,所以錯誤修正可以部署,但新功能尚未部署,因爲他們必須等待新版本。

您可以通過創建發佈分支並從中進行部署來實現此目的。在這種情況下,所有用戶都將其更改提交到中繼,並將一些更改合併到發佈分支中。

我認爲只從1個人部署更改是沒有用的,因爲版本控制的整個想法是在一個項目上一起工作,並一起完成更改/錯誤修復。

看看在svnbook Branching & Merging

1

顯而易見的解決方案是每個開發人員使用一個分支並在工作完成後才合併到主幹。不過,這會增加相當大的開銷。此外,隨着更大塊的代碼將被整合,集成成本將會上升。

理想情況下,開發人員只會完成完成的工作。但是承諾和整合通常對於保持整合的效果非常重要。

也許你應該考慮使用分佈式版本控制系統。開發人員可以隨意提交併恢復其本地存儲庫,並在錯誤修復後進行推送。

無標籤部署到生產服務器讓我感到緊張。

0

您可能想要考慮與主幹和分支機構一起工作。特別是,它聽起來像feature branching可能適合你。