日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

評(píng)《GIT和SVN之間的五個(gè)基本區(qū)別》

 NaturalWill 2015-01-09


原文鏈接http://www.oschina.net/news/12542/git-and-svn,首先說(shuō)明,我沒(méi)看英文原版,因?yàn)榫臀夷壳皝?lái)說(shuō),自認(rèn)為沒(méi)這個(gè)需要了。好吧,我承認(rèn)其實(shí)是犯懶。。。

下面我結(jié)合自身體會(huì),逐條評(píng)論一下:

1.GIT是分布式的,SVN不是:

這一點(diǎn)絕對(duì)是最最關(guān)鍵的重點(diǎn),與原作者不同,我要特別強(qiáng)調(diào)的是這一點(diǎn)對(duì)身處大陸的碼農(nóng)們的重要性。為什么?因?yàn)槿思依贤庀氯?/span>android源碼要幾個(gè)小時(shí),而我們要十幾二十個(gè)小時(shí),甚至好幾天,還會(huì)不停斷線!

分布式的最大好處,在于當(dāng)你要切換不同的提交,不同的分支時(shí),不再需要聯(lián)網(wǎng)。試想一下,要是googleandroid源碼用svn(這個(gè)是純假設(shè),實(shí)際上是完全不可行的,后面會(huì)提到),本來(lái)在大陸下一次代碼就夠慢的了,要是每天再切個(gè)幾次分支和提交,那就別活了。所以在這一點(diǎn)上,我不說(shuō)git完爆svn,應(yīng)該說(shuō)是分布式完爆非分布式。

2. GIT把內(nèi)容按元數(shù)據(jù)方式存儲(chǔ),而SVN是按文件:

說(shuō)實(shí)話,我沒(méi)看出來(lái)原文列第二點(diǎn)出來(lái)是為了說(shuō)明什么。這確實(shí)是個(gè)區(qū)別,但一般用戶是不需要了解的。

看到評(píng)論中有人提到了提交沖突的問(wèn)題。真發(fā)生了大規(guī)模沖突,不管git還是svn,都是挺讓人感到頭疼的,兩者對(duì)沖突的解決辦法也是差不多的。個(gè)人見(jiàn)解,沖突是靠良好的團(tuán)隊(duì)管理和項(xiàng)目分工來(lái)盡力避免的,但真發(fā)生了,解決起來(lái)都差不多,也沒(méi)見(jiàn)哪個(gè)版本控制系統(tǒng)是以解決沖突效率高作為賣點(diǎn)的。當(dāng)然不存在沖突的版本管理系統(tǒng)也有,VSS嘛,往前推個(gè)10年,中興全公司都在用呢,呵呵~

3. GIT分支和SVN的分支不同:

分支確實(shí)是一個(gè)重點(diǎn),只不過(guò)原文沒(méi)說(shuō)到點(diǎn)子上,不過(guò)看文章是挺久之前的,可能那時(shí)候git還沒(méi)現(xiàn)在這么普及(當(dāng)然現(xiàn)在國(guó)內(nèi)也未必有多普及),也情有可原吧。

這里我就說(shuō)最關(guān)鍵的一點(diǎn),你可以看完整的android代碼,如果沒(méi)有,可以用git clone個(gè)linux的完整代碼庫(kù),然后用git branch -r命令看看,你會(huì)發(fā)現(xiàn)有幾十個(gè)甚至近百個(gè)分支,如果你只用svn的話,你一定完全無(wú)法想象。但這就是git分支的優(yōu)勢(shì),因?yàn)?/span>git是基于差異來(lái)管理分支的,其分支的代價(jià)極小,再結(jié)合第一點(diǎn),所以其切換分支也極為方便和快捷。這一點(diǎn)上我認(rèn)為git是優(yōu)于svn的,之所以我不說(shuō)完爆,是因?yàn)檫@一點(diǎn)要結(jié)合項(xiàng)目需求,你的項(xiàng)目不是android,不是linux,沒(méi)有大量分支并行開(kāi)發(fā)、合并的需求,其實(shí)用svn也是可以的。但用git,你可以為一個(gè)單獨(dú)的小功能拉分支,為一輪完整的測(cè)試?yán)种В瑸槟愕拿恳粋€(gè)客戶單獨(dú)拉分支,等等等等,基本上是想拉就拉,這一點(diǎn)svn應(yīng)該是比不上的。

至于原文提到的合沒(méi)合并的問(wèn)題,svn我不常用,git下用git log命令,加上--graph參數(shù),再配合--oneline--color,我覺(jué)得是很方便直觀的。

4. GIT沒(méi)有一個(gè)全局的版本號(hào),而SVN有:

原文承認(rèn)這一點(diǎn)不如svn,我也承認(rèn),但要補(bǔ)充說(shuō)明一下,git每次提交產(chǎn)生的40位(160bit)哈希值,是完全可以等同于svn全局id的作用的,之所以說(shuō)不如,只是因?yàn)椴缓糜浂选?/span>

5. GIT的內(nèi)容完整性要優(yōu)于SVN

完整性這一點(diǎn)git要優(yōu)于svn這是事實(shí),雖然我個(gè)人不論git還是svn,都沒(méi)碰到過(guò)這類問(wèn)題。

反正對(duì)于git,每個(gè)克隆都是個(gè)完整的庫(kù),只要有一個(gè)克隆在,服務(wù)器被雷劈了都不怕,有點(diǎn)狡兔三窟的味道。當(dāng)然,我這里說(shuō)的跟原文說(shuō)的已經(jīng)不是一回事了。

 

看到有評(píng)論說(shuō)git鼓勵(lì)人們拉分支,這完全就是本末倒置了。事實(shí)是,git在分支這一點(diǎn)上優(yōu)勢(shì)巨大,所以當(dāng)項(xiàng)目有大量分支的需求時(shí),自然git就脫穎而出了。這也是為什么android、linux用不了svn的原因。至于說(shuō)svncommit是一種主動(dòng)責(zé)任,稍微用點(diǎn)腦子想想,可能存在一個(gè)版本控制系統(tǒng),不需要程序員承擔(dān)所謂的主動(dòng)責(zé)任么?無(wú)非在VSS里面,是checkout/checkin,在svn里面是commitgit又把svncommit拆分成了commitpush兩步而已。該評(píng)論實(shí)在是過(guò)于主觀,誤導(dǎo)傾向太重。

最后說(shuō)說(shuō)git的不足,結(jié)合項(xiàng)目經(jīng)歷,個(gè)人認(rèn)為最大的是兩點(diǎn),第一,圖形界面支持差,git本身是純命令行的,圖形化的界面也從來(lái)不是git的開(kāi)發(fā)目標(biāo)之一,所以雖然有第三方開(kāi)發(fā)了圖形界面支持,但這始終是git的短板;第二,git本身是不支持基于目錄的鑒權(quán)認(rèn)證的,我有碰到過(guò)幾個(gè)boss挺在意這個(gè)的,雖然也有插件能解決這個(gè)問(wèn)題,但我沒(méi)用過(guò)。gitlinux之父專門為了linux內(nèi)核源碼而開(kāi)發(fā)設(shè)計(jì)的,人家不在意這兩點(diǎn),也完全可以理解。

選擇版本控制工具,要結(jié)合各方面的因素,我反正也見(jiàn)過(guò)一群中興出來(lái)開(kāi)公司的老古董,到今天都還在堅(jiān)持vss的。我只能說(shuō)git是我用下來(lái)感覺(jué)最方便,功能最強(qiáng)大的(本人開(kāi)發(fā)環(huán)境是純linux,寫代碼看代碼用vim,工作內(nèi)容有涉及跨平臺(tái),但vs之類的ide環(huán)境僅僅用來(lái)編譯一下而已)。如果你的項(xiàng)目很“l(fā)inux”的話,那我實(shí)在找不到不用git的理由。你只要想一想,天才如Linus者,會(huì)搞出個(gè)不如svn的東西來(lái)跟自己過(guò)不去么?

 


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多