我們使用:
直到項(xiàng)目接近完成,或者我們正在創(chuàng)建一個(gè)里程碑版本(例如。產(chǎn)品演示,演示版),然后我們(定期)從我們當(dāng)前的開發(fā)分支到:
發(fā)布分支中沒有新特性。只有重要的bug在發(fā)布分支中被修復(fù),修復(fù)這些bug的代碼被重新集成到開發(fā)分支中。
有一個(gè)開發(fā)和一個(gè)穩(wěn)定(發(fā)布)分支的兩部分流程使我們的生活變得更容易了,我不相信我們可以通過引入更多的分支來改進(jìn)它的任何部分。每個(gè)分支也有它自己的構(gòu)建過程,這意味著每隔幾分鐘就會(huì)產(chǎn)生一個(gè)新的構(gòu)建過程,所以在代碼簽入之后,我們?cè)诖蠹s半小時(shí)內(nèi)得到了所有構(gòu)建版本和分支的新可執(zhí)行文件。
有時(shí),我們也有一個(gè)開發(fā)人員的分支,致力于一項(xiàng)新的、未經(jīng)證實(shí)的技術(shù),或者創(chuàng)建一個(gè)概念的證明。但通常情況下,只有當(dāng)更改影響到代碼基的許多部分時(shí),才會(huì)這樣做。這種情況平均每3-4個(gè)月發(fā)生一次,這樣的分支通常在一兩個(gè)月內(nèi)重新整合(或報(bào)廢)。
一般來說,我不喜歡每個(gè)開發(fā)人員都在自己的分支中工作,因?yàn)槟恪疤^去,直接搬到集成地獄”。我強(qiáng)烈反對(duì)。如果你有一個(gè)共同的代碼庫(kù),你應(yīng)該一起工作。這使得開發(fā)人員對(duì)他們的簽入更加謹(jǐn)慎,每個(gè)程序員都知道哪些更改可能會(huì)破壞構(gòu)建,因此在這種情況下測(cè)試更加嚴(yán)格。
關(guān)于入住早期的問題:
如果你只需要完美碼要簽入,實(shí)際上什么都不應(yīng)該簽入。沒有任何代碼是完美的,對(duì)于QA來驗(yàn)證和測(cè)試它,它需要在開發(fā)分支中,這樣才能構(gòu)建一個(gè)新的可執(zhí)行文件。
對(duì)于我們來說,這意味著一旦一個(gè)特性完成并由開發(fā)人員進(jìn)行測(cè)試,它就會(huì)被簽入。如果有已知的(非致命的)錯(cuò)誤,甚至可以簽入,但在這種情況下,通常會(huì)通知受bug影響的人。不完整和工作中的代碼也可以簽入,但前提是它不會(huì)造成任何明顯的負(fù)面影響,如崩潰或破壞現(xiàn)有的功能。
有時(shí),不可避免的合并代碼&數(shù)據(jù)檢查會(huì)使程序在新代碼生成之前無(wú)法使用。我們做的最起碼是在簽入注釋中添加一個(gè)“等待構(gòu)建”,并/或發(fā)送一封電子郵件。