3.構(gòu)建錯(cuò)誤是怎么來(lái)的
回到工位,曉川跟師父聊起這些。師父說(shuō):“老劉當(dāng)然沒(méi)法命令你了。他只是項(xiàng)目經(jīng)理,不是你部門經(jīng)理。他要是敢指責(zé)你,你就跟咱們領(lǐng)導(dǎo)說(shuō),有人給你撐腰。至于他不告訴你該怎么做,那要么是他也不知道,要么是他不愿意從他嘴里說(shuō)出來(lái)。這人一看就是個(gè)老油條,你小心點(diǎn)兒。 ”
“謝謝師父提醒。 ”
都說(shuō)公司里面有辦公室政治,看來(lái)確實(shí)是這樣啊,曉川心想。師父年長(zhǎng)我很多,這方面我要多聽(tīng)聽(tīng)他怎么說(shuō)。不過(guò),到底為什么構(gòu)建總是出錯(cuò)呢?老劉說(shuō)得也對(duì),我得調(diào)查分析一下才能知道。
曉川著手調(diào)查。就以上個(gè)星期剛做完的集成為例吧。每次構(gòu)建出錯(cuò),我是定位到出錯(cuò)的源文件,然后通過(guò)源代碼版本控制工具查一下這個(gè)文件昀近是誰(shuí)動(dòng)過(guò),然后就找相應(yīng)的程序員去改正,然后把改正直接檢入到集成分支。嗯,那我去看一下在集成期間,是誰(shuí)把改正檢入到集成分支上的,就能知道是誰(shuí)的提交造成了問(wèn)題。
曉川去查看源代碼版本控制工具的版本庫(kù)中集成分支上昀近所做的改動(dòng)。咦,都是曉川改的……哦,是因?yàn)槌绦騿T都是跑到我的計(jì)算機(jī)上改的,所以都是以我的名義檢入的。唉,這么查,查不出來(lái)了。
曉川只好根據(jù)每次改動(dòng)所改的具體文件去查。因?yàn)樾薷倪@個(gè)文件,讓編譯能通過(guò),那意味著這個(gè)文件的前一次改動(dòng)是有問(wèn)題的。這樣,再去查這個(gè)文件當(dāng)初是誰(shuí)在哪個(gè)任務(wù)分支上改的,就能知道是誰(shuí)在哪兒惹的禍了。
就這樣,曉川用了大半天的時(shí)間,到快下班的時(shí)候,整理出了一張表,表明這次集成遇到的每個(gè)構(gòu)建錯(cuò)誤,各是由誰(shuí),在哪個(gè)提交中帶進(jìn)來(lái)的。下班啦!
下了班,曉川在外面隨便買了點(diǎn)東西吃。吃著吃著,覺(jué)得不對(duì)勁兒。倒不是吃的東西不對(duì)勁兒,而是想起了自己下班前的工作成果,覺(jué)得不對(duì)勁兒。
每個(gè)構(gòu)建錯(cuò)誤,確實(shí)是某個(gè)提交帶來(lái)的,確實(shí)是因?yàn)槟硞€(gè)提交的存在而存在的。如果沒(méi)有那個(gè)提交,就沒(méi)有相應(yīng)的構(gòu)建錯(cuò)誤。但是,這并不能說(shuō),這個(gè)提交本身是有問(wèn)題的,是有構(gòu)建錯(cuò)誤的。因?yàn)槌绦騿T在提交前構(gòu)建的內(nèi)容,并不是我構(gòu)建的內(nèi)容。我構(gòu)建的內(nèi)容,是多個(gè)提×××并到一起之后的內(nèi)容。
事實(shí)上,這正是老劉質(zhì)疑我的地方?!叭绻绦騿T的提交都沒(méi)問(wèn)題,你確定你構(gòu)建的時(shí)候就肯定沒(méi)問(wèn)題么?”我那時(shí)也覺(jué)得有點(diǎn)不對(duì)勁兒,自己的思路不嚴(yán)謹(jǐn)。怎么今天下午調(diào)查的時(shí)候又給忘了!不成,我得繼續(xù)研究清楚。不然一周后,新的一輪構(gòu)建又要開(kāi)始了,就顧不上了。
星期二上班,曉川來(lái)到工位,解鎖計(jì)算機(jī),開(kāi)始復(fù)現(xiàn)程序員在提交前的環(huán)境。這個(gè)比較簡(jiǎn)單,因?yàn)槌绦騿T工作在任務(wù)分支上,在提交前把所有要提交的內(nèi)容都保存在任務(wù)分支上,所以,只要把任務(wù)分支末端的源代碼取出來(lái),放到本地工作區(qū)里,就得到程序員在提交前的環(huán)境了。
在這樣的工作區(qū)里,曉川開(kāi)始編譯構(gòu)建。構(gòu)建要一個(gè)多小時(shí)的時(shí)間,因?yàn)闆](méi)法做增量構(gòu)建,只能全量構(gòu)建。一個(gè)多小時(shí)后,構(gòu)建結(jié)果出來(lái)了,構(gòu)建是成功的!
曉川又做了幾個(gè)試驗(yàn)。結(jié)果不盡相同。有的是成功的,有的報(bào)錯(cuò)。雖然不能完全確定,但是憑記憶,應(yīng)該就是在集成分支上構(gòu)建時(shí)報(bào)的錯(cuò)。這么說(shuō),集成分支上構(gòu)建報(bào)錯(cuò),有兩種可能,一種是提交本身的問(wèn)題,一種是幾個(gè)提交相互合并帶來(lái)的問(wèn)題。在數(shù)量上,大概是一半兒一半兒。
得到了分析結(jié)果,曉川覺(jué)得挺有成就感。高興的時(shí)候想想,嗯,集成這工作呢,其實(shí)也挺輕松的,因?yàn)榇蟛糠謺r(shí)間都在等。等著程序員解決代碼合并沖突,等著構(gòu)建。構(gòu)建失敗了,等著相關(guān)的程序員修復(fù)。而有時(shí)候是大家一起陪著等。等著把提交的代碼都合并到集成分支,相關(guān)的程序員們才能回家。等出了基線,依賴于基線中內(nèi)容的新的任務(wù)才能開(kāi)始。等著等著,時(shí)間就等過(guò)去了。青春就等過(guò)去了。
本文節(jié)選自《軟件集成策略》一書(shū)
董越 著.
電子工業(yè)出版社出版。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前文章:軟件集成策略故事連載----構(gòu)建錯(cuò)誤是怎么來(lái)的-創(chuàng)新互聯(lián)
分享地址:http://sd-ha.com/article16/decdgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、網(wǎng)站策劃、Google、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站設(shè)計(jì)公司、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容