版本控制系統(tǒng)是開發(fā)人員之間共享源代碼的好方法,它們提供了多人同時(shí)在同一個(gè)代碼庫(kù)上工作的能力,而沒有不斷來(lái)回發(fā)送文件的危險(xiǎn)。在嵌入式開發(fā)過(guò)程中犯了一個(gè)錯(cuò)誤,請(qǐng)放心,只需簡(jiǎn)單地按一下按鈕,就可以將代碼回滾到一個(gè)新的起點(diǎn)。歷史表明,沒有版本控制系統(tǒng)的工作是一場(chǎng)遲早會(huì)發(fā)生的災(zāi)難!版本控制系統(tǒng)是一個(gè)必不可少的開發(fā)工具,有很多技巧可以幫助你掌握和充分利用這些系統(tǒng)。
技巧1——經(jīng)常提交
一個(gè)開發(fā)人員做了一些小的改變,整個(gè)系統(tǒng)變得不穩(wěn)定。開發(fā)人員沒有擔(dān)心,撤銷了他所做的一些更改,瞧!系統(tǒng)仍然是壞的。沒有版本控制系統(tǒng),開發(fā)人員現(xiàn)在驚慌失措,試圖理解他們?cè)?分鐘前所做的不記得的更改!另一方面,使用版本控制的工程師執(zhí)行右鍵單擊,簡(jiǎn)單地返回到代碼的前一個(gè)工作版本,現(xiàn)在小心翼翼地向前移動(dòng)。但是如果開發(fā)人員已經(jīng)幾天沒有提交他的代碼了呢?幾天的努力可能會(huì)付諸東流,這就是為什么使用版本控制的開發(fā)人員應(yīng)該經(jīng)常提交!完成一項(xiàng)功能并提交。讓部分功能正常工作,提交。這不僅可以在出現(xiàn)問(wèn)題時(shí)節(jié)省工程師的時(shí)間,還會(huì)在版本控制系統(tǒng)中留下所做更改的痕跡。
技巧2——填寫提交日志
如果一個(gè)工程師經(jīng)常提交他們的代碼變更,這是非常好的;但是,如果在變更日志中沒有提供足夠的信息,這可能是徒勞的。大多數(shù)版本控制工具都允許在提交代碼時(shí)添加注釋。在日志中填入有用的信息!不要留空白或在這里放隱晦的信息!將來(lái),代碼中可能會(huì)引入一個(gè)bug,當(dāng)嵌入式開發(fā)人員回溯版本時(shí),日志中必須包含有用的信息,說(shuō)明發(fā)生了什么變化。這只需要幾分鐘,將節(jié)省許多小時(shí)的沮喪和頭痛!嘗試并提出一個(gè)在每次提交之前需要填寫的通用日志格式。
技巧3——不要忘記將文件添加到VCS中
眾所周知,版本控制系統(tǒng)會(huì)捉弄開發(fā)人員。最大的問(wèn)題是當(dāng)開發(fā)人員認(rèn)為他正在提交代碼,而實(shí)際上他并沒有!怎么會(huì)這樣?大多數(shù)系統(tǒng)要求在創(chuàng)建文件時(shí)將其添加到版本控制中。如果沒有做到這一點(diǎn),那么系統(tǒng)會(huì)提交并忽略那些沒有被添加的文件!所以不要忘記添加文件到VCS!
技巧4——定義提交過(guò)程
嵌入式開發(fā)人員很容易忘記添加文件到版本控制中,正確記錄變更和與版本控制系統(tǒng)相關(guān)的各種任務(wù)。最好的辦法是為每一項(xiàng)需要完成的不同任務(wù)創(chuàng)建一個(gè)流程。例如,創(chuàng)建一個(gè)提交進(jìn)程。它看起來(lái)會(huì)像下面這樣:
更新代碼庫(kù)中的版本日志
復(fù)制更改
將文件添加到VCS
開始提交過(guò)程
將更改日志粘貼到提交注釋中,并添加任何其他相關(guān)注釋
完成提交
可以記錄額外的過(guò)程,例如創(chuàng)建代碼分支,將代碼分支與主源代碼主干合并,以及創(chuàng)建代碼的正式發(fā)布。
技巧5——鎖定正在處理的模塊
有時(shí)候,多個(gè)嵌入式開發(fā)人員在一個(gè)項(xiàng)目上工作,可能需要修改同一個(gè)模塊。版本控制系統(tǒng)通常有一個(gè)特性,允許程序員鎖定一個(gè)特定的模塊進(jìn)行編輯。這可以防止另一個(gè)程序員同時(shí)修改文件,從而有助于防止代碼庫(kù)中的沖突。
技巧6——利用代碼比較工具
不可避免地會(huì)有一個(gè)bug潛入代碼中而被忽視的時(shí)候,有時(shí)它會(huì)被發(fā)現(xiàn),然后會(huì)問(wèn)這個(gè)問(wèn)題:“發(fā)生了什么變化?”。確定的唯一方法是比較代碼的不同版本。如果不是因?yàn)榇蠖鄶?shù)版本控制系統(tǒng)都包括一個(gè)差異工具,這可能是一個(gè)痛苦的過(guò)程。該工具允許跨不同版本的代碼并排比較代碼中的文件。這些改變被突出顯示,然后可以作為bug的潛在來(lái)源進(jìn)行檢查。
技巧7——不要害怕合并代碼分支
將代碼分支成一個(gè)單獨(dú)的版本,進(jìn)行修改,然后再將它合并回主版本主干的想法可能會(huì)令人害怕!如果出了問(wèn)題會(huì)怎么樣?如果沒有正確合并,主分支損壞了怎么辦?初學(xué)者經(jīng)常會(huì)害怕合并分支,但不要擔(dān)心!這是一種常見現(xiàn)象,尤其是當(dāng)多個(gè)嵌入式開發(fā)人員參與項(xiàng)目時(shí)。如果犯了一個(gè)錯(cuò)誤,很容易返回到一個(gè)版本并重新開始!克服這種恐懼的最好方法是練習(xí),這將在第十條建議中進(jìn)一步討論。
技巧8——與Trac等工具集成
現(xiàn)在有很多工具可以很好地集成到控制系統(tǒng)中,這些工具包括從缺陷跟蹤到項(xiàng)目管理工具。Trac是最受歡迎的,它不僅允許計(jì)劃不同版本的軟件,跟蹤錯(cuò)誤,甚至允許瀏覽存儲(chǔ)在庫(kù)中的代碼庫(kù)!這在代碼評(píng)審和計(jì)劃會(huì)議期間非常方便!最好的是這個(gè)工具是免費(fèi)的!
技巧9——利用持續(xù)集成
有一個(gè)簡(jiǎn)潔的概念正在席卷全球,這就是持續(xù)整合。這個(gè)想法有幾個(gè)不同的版本,但是最有趣的一個(gè)版本發(fā)生在開發(fā)人員提交代碼的時(shí)候。作為提交的一部分,集成服務(wù)器將編譯代碼并運(yùn)行單元測(cè)試!如果發(fā)現(xiàn)任何錯(cuò)誤,它們將被報(bào)告給開發(fā)人員!這個(gè)想法是測(cè)試和代碼一起被開發(fā),每當(dāng)一個(gè)新的版本被創(chuàng)建,它會(huì)被立即檢查錯(cuò)誤!這是一個(gè)獨(dú)特的概念,應(yīng)該加以重視!有許多免費(fèi)的持續(xù)集成服務(wù)器,包括Hudson。
技巧10——?jiǎng)?chuàng)建一個(gè)測(cè)試庫(kù)并進(jìn)行實(shí)驗(yàn)
不管你讀到多少技巧和訣竅,沒有什么能勝過(guò)真實(shí)世界的經(jīng)驗(yàn)。最常用的版本控制系統(tǒng)是SVN,客戶端和服務(wù)器端的應(yīng)用程序都可以免費(fèi)下載。如果你不需要非常大的數(shù)據(jù)庫(kù),VisualSVN server是一個(gè)很好的服務(wù)器端。一旦達(dá)到一定規(guī)模,用戶就需要開始付費(fèi)。在客戶端,Tortoise SVN是一個(gè)偉大的客戶!嵌入式開發(fā)人員下載每一個(gè)并開始實(shí)驗(yàn)!在你知道之前,你將成為VCS的主人!