svn和git

 

版本工具

差別git

svngithub

gitwindows

系統特色安全

1.集中式版本控制系統(文檔管理很方便)服務器

2.企業內部並行集中開發分佈式

3.windows系統上開發推薦使用svn

4.克隆一個擁有將近一萬個提交(commit),五個分支,每一個分支有大約1500個文件,用時將近一個小時工具

1.分佈式系統(代碼管理很方便)gitlab

2.開源項目開發學習

3.mac,Linux系統上開發推薦使用

4.克隆一個擁有將近一萬個提交(commit),五個分支,每一個分支有大約1500個文件,用時1分鐘

靈活性

1.搭載svn的服務器出現故障,沒法與之交互
2.全部的svn操做都須要中央倉庫交互(例:拉分支,看日誌等)

1.能夠單機操做,git服務器故障也能夠在本地git倉庫工做
2.除了push和pull(或fetch)操做,其餘均可以在本地操做
3.根據本身開發任務任意在本地建立分支
4.日誌都是在本地查看,效率較高

安全性

較差,按期備份,而且是整個svn都得備份

較高,每一個開發者的本地就是一套完整版本庫,記錄着版本庫的全部信息(gitlab集成了備份功能)

分支方面

1.拉分支更像是copy一個路徑
2.可針對任何子目錄進行branch
3.拉分支的時間較慢,由於拉分支至關於copy
4.建立完分支後,影響所有成員,每一個人都會擁有這個分支

5.多分支並行開發較重(工做較多並且繁瑣)

1.我能夠在Git的任意一個提交點(commit point)開啓分支!(git checkout -b newbranch HashId)
2.拉分支時間較快,由於拉分支只是建立文件的指針和HEAD
3.本身本地建立的分支不會影響其餘人

4.比較適合多分支並行開發

5.git checkout hash值(切回以前的版本,無需版本回退)

6.強大的cherry-pick

版本控制

1.保存先後變化的差別數據,做爲版本控制
2.版本號進行控制,每次操做都會產生一個高版本號(svn的全局版本號,這是svn一個較大的特色,git是hash值)

1.git只關心文件數據的總體發生變化,更像是把文件作快照,文件沒有改變時,分支只想這個文件的指針不會改變,文件發生改變,指針指向新版本
2. 40 位長的哈希值做爲版本號,沒有前後之分

3.git rebase操做能夠更好的保持提交記錄的整潔

工做流程

1.每次更改文件以前都得update操做,有的時候修改過程當中這個文件有更新,commit不會成功
2.有衝突,會打斷提交動做(衝突解決是一個提交速度的競賽:手快者,先提交,平安無事;手慢者,後提交,可能遇到麻煩的衝突解決。)

1.開始工做前進行fetch操做,完成開發工做後push操做,有衝突解決衝突
2.git的提交過程不會被打斷,有衝突會標記衝突文件

3.gitflow流程(經典)

內容管理

svn對中文支持好,操做簡單,適用於大衆

對程序的源代碼管理方便,代碼庫佔用的空間少,易於分支化管理

學習成本

使用起來更方便,svn對中文支持好,操做簡單,適用於大衆

更在意效率而不是易用性,成本較高(有不少獨有的命令,rebase,遠程倉庫交互的命令,等等)

權限管理

svn的權限管理至關嚴格,能夠按組、我的針對某個子目錄的權限控制(每一個目錄下都會有個.svn的隱藏文件)

git沒有嚴格的權限管理控制,只有帳號角色劃分(在項目的home文件下有且只有一個.svn目錄)

管理平臺

有吧(這個「吧」字,確定有,但本人沒有接觸過)

gitlab(建議使用,集成的功能較多,API開發),gerrit,github等

相關文章
相關標籤/搜索