日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何用Git工具發(fā)現(xiàn)和解決開(kāi)發(fā)項(xiàng)目中的痛點(diǎn)

 在日常開(kāi)發(fā)和項(xiàng)目管理過(guò)程中往往不可避免地存在很多痛點(diǎn)。如果能及時(shí)發(fā)現(xiàn)和解決掉這些問(wèn)題,可以極大提高開(kāi)發(fā)我們的開(kāi)發(fā)效率和減輕項(xiàng)目的技術(shù)債務(wù),減少項(xiàng)目風(fēng)險(xiǎn)。很多減輕技術(shù)債務(wù)的工具都是預(yù)防性的。比如編譯器,lint,靜態(tài)分析工具等。這些工具都通過(guò)防止開(kāi)發(fā)人員簽入代碼碼,這一方面限制了開(kāi)發(fā)人員的自由,引起不適,而且可能會(huì)導(dǎo)致一些潛在的問(wèn)題。而且盡管通過(guò)管制和審核流程似乎應(yīng)該是完美無(wú)瑕的代碼,但是實(shí)際上并不一定會(huì)帶來(lái)功能良好的系統(tǒng)。

軟件開(kāi)發(fā)的過(guò)程不僅涉及開(kāi)發(fā)人員之間以及開(kāi)發(fā)人員與他人團(tuán)隊(duì)之間的交互,如何快速的無(wú)聲的項(xiàng)目的痛點(diǎn)這是個(gè)問(wèn)題。如果你的開(kāi)發(fā)項(xiàng)目是采用git管理,那么Git本身就能給我們很多好用的工具,本文蟲蟲就給大家講講git中自帶哪些解決痛點(diǎn)的工具。

[[318813]]

git log 發(fā)現(xiàn)最常改變?yōu)槲募?/strong>

我們時(shí)常忽略一個(gè)事實(shí)是,我們經(jīng)常修改的,修改最多的文往往是問(wèn)題發(fā)生最多的,而這些文件往往就是開(kāi)發(fā)和項(xiàng)目的痛點(diǎn)。我們要找到這些痛點(diǎn),或者熟悉一個(gè)未知的項(xiàng)目不知道如何入手的時(shí)候,首先可以做的就是找出項(xiàng)目中改變最多,提交commit最頻繁的文件。找出倉(cāng)庫(kù)最常變化的文件(top10)命令為:

 
 
 
  1. git log --format=format: --name-only | egrep -v '^$' | sort | uniq -c | sort -rg | head -10 

比如我們最開(kāi)源安全項(xiàng)目OpenSSH查看一下top10變化文件:

我們可以看到除了,版本更新文檔ChangeLog以外,變化第二的是configure.ac這個(gè)文件是項(xiàng)目編譯文件makefile的配置文件。源碼里面修改最多的是sshd.c是sshd服務(wù)器端的源代碼文件。

可以看到這個(gè)命令很有用,但是很長(zhǎng)不好記,怎么辦?其實(shí)也好辦,那就是加一個(gè)git別名即可。vim打開(kāi)~/.gitconfig配置文件,在[Aliases]部分增加以下配置項(xiàng):

 
 
 
  1. cctop10 = "!git log --format=format: --name-only | egrep -v '^$' | sort | uniq -c | sort -rg | head -10" 

 

這樣,對(duì)一個(gè)倉(cāng)庫(kù)我們只需執(zhí)行這樣做是按照更改的數(shù)量對(duì)項(xiàng)目中的文件進(jìn)行排序,并獲取前10個(gè)文件。隨著時(shí)間的推移,這些文件中發(fā)生的更改最多,因此,這些文件中需要更改的機(jī)會(huì)更大。

git blame 找出痛點(diǎn)的來(lái)源

在知道變化最多的文件這個(gè)痛點(diǎn)后,我們需要詳細(xì)了解痛點(diǎn)過(guò)程?;蛘唔?xiàng)目的另一個(gè)痛點(diǎn)是,發(fā)現(xiàn)項(xiàng)目文件被某人修改后就崩潰了,再也跑不起來(lái)了。想找出是誰(shuí)修改的,大家來(lái)鄙視他,或者譴責(zé)(blame)它。這就需要一個(gè)git另一個(gè)利器blame,他就是告訴我們這個(gè)問(wèn)題行(變化)是誰(shuí)引入的。比如我們同樣以openssh 項(xiàng)目為例,查看一下sshd.c的文件的變化歷史

git blame sshd.c:

如上我們可以看到基本上每一行代碼出現(xiàn)的現(xiàn)場(chǎng),包括了commitID、提交人、詳細(xì)時(shí)間和代碼。

如果文件較大,可以通過(guò)"-L"參數(shù)指定開(kāi)始和結(jié)束行,比如sshd.c文件的200行開(kāi)始的20行內(nèi)容的來(lái)源。

關(guān)于git blame 注意:

如果一個(gè)commitID前面有^號(hào),那么自文件創(chuàng)建以來(lái),對(duì)應(yīng)的行就從沒(méi)修改過(guò)。

blame也可以跟蹤跨文件的行變化。比如對(duì)一個(gè)大文件代碼重構(gòu)或者配置文件被分散到多個(gè)小文件,那么會(huì)顯示大文件中的原始提交和大文件的名稱??赏ㄟ^(guò)-C選項(xiàng)來(lái)實(shí)現(xiàn)。

git bisect 找到引入問(wèn)題的commit

如果知道是哪個(gè)行代碼,那次commit引入的問(wèn)題,我們可以用blame揪出提交問(wèn)題的人。但是如果不知道是哪兒引入的問(wèn)題,需要找出引入問(wèn)題的提交。則需要用一個(gè)git 工具bisect。它也很簡(jiǎn)單用二分發(fā)不斷測(cè)試回溯到中間的commit點(diǎn),直到找到這個(gè)問(wèn)題引入點(diǎn)。

git bisect start [終點(diǎn)] [起點(diǎn)]

終點(diǎn)為你確保有問(wèn)題的commit(如果不能確定那就是現(xiàn)在HEAD),起點(diǎn)為你確保的之后才出現(xiàn)的問(wèn)題(如果不確定就用最開(kāi)始一次commits)。

執(zhí)行這個(gè)命令后,項(xiàng)目倉(cāng)庫(kù)的文件狀態(tài)會(huì)調(diào)到這兩次的中間commit,這時(shí)候測(cè)試代碼,如果項(xiàng)目運(yùn)行OK,就執(zhí)行g(shù)it bisect good。如果還是報(bào)錯(cuò),則執(zhí)行g(shù)it bisect bad。

執(zhí)行后,git會(huì)根據(jù)good或者bad狀態(tài)跳轉(zhuǎn)到后半段commit的一半(即3/4)commit處,或者1/4 commit處

繼續(xù)測(cè)試代碼,標(biāo)識(shí)good或者bad

以此類推直到找到引入問(wèn)題commit。

總結(jié):

git是一個(gè)天生為開(kāi)發(fā)而生的工具,生來(lái)就是為了幫助我們解決痛點(diǎn)的。而且git中很多工具就是對(duì)應(yīng)解決我們?nèi)粘>唧w痛點(diǎn)的,善用他們不光可以讓我日常生活更舒服,也能極大提高開(kāi)發(fā)效率。"工欲善其事,必先利其器","磨刀不誤砍柴工"希望我們會(huì)用并且善用這些工具。


本文題目:如何用Git工具發(fā)現(xiàn)和解決開(kāi)發(fā)項(xiàng)目中的痛點(diǎn)
本文網(wǎng)址:http://m.5511xx.com/article/cdoegcj.html