來到上海的這些天,跟一些公司技術(shù)人員的交流之后,發(fā)現(xiàn)很多公司使用的代碼版本管理工具是 SVN。
在過去三年的工作中,我們公司一直使用的是 git管理工具,leader 也一直強調(diào) git 全面優(yōu)于 SVN。這么多天以來,發(fā)現(xiàn)如此多的公司,團隊在使用 SVN,我想 SVN 一定是有自己的優(yōu)勢的。
經(jīng)過一晚的學習了解,鄙人將自己了解的 SVN 和 git 寫下來,供行業(yè)的使用者參考點評。
首先,我先簡單的將 git 和 SVN 的一些區(qū)別列舉出來:
1.git 是分布式管理工具,而 svn 是集中式管理
2.git 把內(nèi)容按照元數(shù)據(jù)的形式存儲,而 SVN 是按照文件存儲
3.git 分支和 SVN 的分支結(jié)構(gòu)不同
4.git 的內(nèi)容完整性要優(yōu)于 SVN
5.git 沒有一個全局的版本號,而 svn 有具體的版本號
下面是較詳細的解釋:
1.subVersion,是一個開源的版本控制系統(tǒng),支持大多數(shù)常見的操作系統(tǒng)。SVN 管理著隨時間改變的數(shù)據(jù),這些數(shù)據(jù)存放在一個中央資料檔案庫中(repository)。這個檔案庫很像一個普通的文件服務(wù)器,但它會記住每一次文件的變動。所以,我們可以瀏覽文件的變動歷史,也可以把檔案恢復(fù)到舊的版本。SVN 可以管理任何類型的文件,包括程序源碼。
2.git 是一款免費,開源的分布式版本控制系統(tǒng)。用以有效,高速度處理從很小到非常大的項目版本管理。git 是linus torvalds 為了幫助 lnux 內(nèi)核開發(fā)而開發(fā)的一個開源的版本管理軟件。
3.集中式版本管理控制系統(tǒng)的核心是服務(wù)器。開發(fā)者在開始工作之前必須從服務(wù)器獲取源碼,然后開始開發(fā),解決沖突,提交等。而分布式版本控制系統(tǒng)相比集中式最大的區(qū)別就是開發(fā)者可以將新的版本提交到本地。每一個開發(fā)者都可以通過克隆的方式,在本地拷貝一個完整的 git 倉庫。


4.工作流程:
SVN 工作流程:
1)新的一天,從服務(wù)器下載項目組最新代碼
2)進入自己的分支,開始工作,每隔一段時間向自己的分支提交一次代碼。(一般一個小時左右,或在完成一個小功能以后)
3)下班之前,將自己的分支合并到服務(wù)器的主分支上。
git 工作流程:
1)從服務(wù)器上克隆完整的 git 倉庫(包括代碼和版本信息)到單機上
2)在自己的機器上根據(jù)不同的目的創(chuàng)建分支,修改代碼。
3)在單機上自己創(chuàng)建的分支上提交代碼,
4)在單機上合并分支
5)將服務(wù)器上的最新代碼 fetch下來,然后跟自己的主分支合并。
6)生成 patch 補丁,把補丁發(fā)送給主開發(fā)者
7)主開發(fā)者會檢查各個開發(fā)者的補丁是否有沖突,如果有,根據(jù)沖突的成都決定自己解決沖突還是將沖突交給有沖突的開發(fā)者,由他們來解決補丁中的沖突,其中一人將解決后的補丁發(fā)送給主開發(fā)者。補丁全部沒有沖突之后,則通過審核。
8)一般來說,開發(fā)者可以通過 pull 命令來解決沖突
以上,是我的一點認識,謹供行業(yè)同仁參考點評!