svn介紹
Subversion(SVN)是一個開源的,跨平臺的版本控制系統,由CollabNet公司成立於2000年;Subversion作爲新一代的版本管理系統,以其目錄版本化、原子提交、版本化的元數據、更加有效的分支和標籤等特性,至今已被衆多的互聯網企業使用來管理網站、論壇的代碼文件;Subversion最獨特的地方,便是可以通過Apache的擴展模塊與Apache的HTTP服務相結合,實現更安全的特性與管理,其次用戶還可以通過HTTP協議去訪問版本庫,還可以通過SSL協議傳輸加密,保證數據的安全性;Subversion是Apache軟件基金會的發展的一個項目,並且也是一個豐富的開發人員和用戶社區的一部分。
常見的版本控制軟件
1,CVS,逐漸被SVN取代,是CVX重寫版和改寫版
2,SVN,Subversion
3,Git,Git是一個開源的分佈式版本控制系統,用以有效、高速的處理從很小到非常大的項目版本管理。Git 是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件
svn的服務器常見有3種運行訪問方式
1、獨立服務器(例如:svn://IP/sadoc);
2、藉助apache(例如:http://IP/sadoc);
1)單獨安裝Apache+svn (不建議)
2)csvn是一個單獨的整合的軟件,帶web界面管理的svn軟件。
3、本地直接訪問(例如:file://IP/sadoc)
客戶端訪問方式
Subversion可以通過多種方式訪問--本地磁盤訪問,或各種各樣不同的網絡協議,但一個版本庫的地址永遠都是一個URL,URL方案反映了訪問方法
file://直接版本訪問(本地磁盤或者網絡磁盤)
http://通過WebDAV協議訪問支持Subversion的Apache服務器
https://與http://相似,但是用的SSL加密
svn://通過未認證的TCP/IP自定義協議訪問svnserver服務器
svn+ssh://通過認證並加密的TCP/IP自定義協議訪問svnserver服務器
SVN數據格式
Subversion存儲版本數據方式2種:BDB(一種事務安全型表類型)和FSFS(一種不需要數據庫的存儲系統)。因爲BDB方式在服務器中斷時,有可能鎖住數據,所以還是FSFS方式更安全一點;那麼在創建Subversion版本控制倉庫的時候,可以指定存儲版本數據爲FSFS方式;
優缺點
集中式代碼管理的核心是服務器,所有開發者在開始新一天的工作之前必須從服務器獲取代碼,然後開發,最後解決衝突,提交。所有的版本信息都放在服務器上。如果脫離了服務器,開發者基本上可以說是無法工作的。下面舉例說明:
開始新一天的工作:
1、從服務器下載項目組最新代碼
2、進入自己的分支,進行工作,每隔一小時向服務器上自己的分支持提交一次代碼(很多人都有這個習慣。因爲有時候自己對自己代碼改來改去,最後又想還原到前一個小時的版本,或者看看前一個小時自己修改了哪些代碼,就需要這樣做了)。
3、下班時間快到了,把自己的分支合併到服務器的主分支上,一天的工作完成,並反映給服務器
這就是經典的svn工作流程,從流程上看,有缺點,也有優點。
缺點:
1、服務器壓太大,svn數據庫容量暴增
2、如果不能連接到服務器上,基本上不可以工作,看上面第二步,如果服務器不能連接上,就不能提交,還原,對比等
3、不適合開源開發(開發人數非常非常多,但是Googleapp engine就是用SVN的)。但一般集中式管理的有非常明確權限管理機制(例如分支訪問限制),可以實現分層管理,從而很好解決開發人數衆多問題
優點:
1、管理方便,邏輯明確,符合一般人思維習慣
2、易於管理,集中式服務器更能保證安全性
3、代碼一致性非常高
4、適合開發人數不多的項目開發
svn服務端搭建部署
1. 系統環境:
[root@YII~]# cat /etc/redhat-release
CentOSLinux release 7.2.1511 (Core)
[root@YII~]# uname -rm
3.10.0-327.el7.x86_64x86_64
2. yum安裝subversion
[root@YII~]# yum install subversion -y
3. 檢測是否安裝成功
[root@YII~]# rpm -qa subversion
subversion-1.7.14-10.el7.x86_64
4. 配置並啓動SVN
建立svn版本庫數據存儲根目錄(svndata)及用戶,密碼權限目錄(svnpasswd)
[root@YII~]# mkdir -p /application/svndata
[root@YII~]# mkdir -p /application/svnpasswd
5. 啓動SVN服務指定服務的SVN根目錄
[root@YII~]# svnserve -d -r /application/svndata/
6. 查看SVN進程:
[root@YII~]# ps -ef|grep svn
root 2579 1 0 09:32 ? 00:00:00 svnserve -d -r/application/svndata/
root 2586 2487 0 09:35 pts/0 00:00:00 grep --color=auto svn
7. 查看SVN端口:
[root@YII~]# netstat -lntup|grep 3690
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 2579/svnserve
到此,SVN服務端安裝完畢,以下爲服務端的配置:
建立項目版本庫
創建一個新的subsersion項目test.com,其實類似test.com這樣的項目可以創建多個每個項目對應不同的代碼,以此爲例:
[root@YII~]# svnadmin create /application/svndata/test.com
[root@YII~]# ls -ld /application/svndata/test.com/
drwxr-xr-x6 root root 80 Apr 9 09:53/application/svndata/test.com/
2. 調整SVN配置文件及權限文件
配置允許用戶hejp讀寫:
[root@YII~]# cd /application/svndata/test.com/conf/
[root@YIIconf]# cp svnserve.conf svnserve.conf.ori
修改配置文件
sed -i ’s/#anon-access = read / anon-access = none /’ svnserve.conf
sed -i ’s/#auth-access = write / auth-access = write /’ svnserve.conf
sed -i ’s%#password-db = passwd % password-db = /application/svnpasswd/passwd%’svnserve.conf
sed -i ’s%#authz-db = authz % authz-db = /application/svnpasswd/authz%’ svnserve.conf
檢查:
[root@YIIconf]# diff svnserve.conf svnserve.conf.ori
19,20c19,20
< anon-access = none
< auth-access = write
---
> #anon-access = read
> #auth-access = write
27c27
< password-db = /application/svnpasswd/passwd
---
> #password-db = passwd
34c34
< authz-db = /application/svnpasswd/authz
---
> #authz-db = authz
3. 把密碼認證文件模板考到相關目錄,並設置只有root才能看。
[root@YIIconf]# cp passwd authz/application/svnpasswd/
[root@YIIconf]# cd /application/svnpasswd/
[[root@YIIsvnpasswd]# chmod 700 authz passwd
[root@YIIsvnpasswd]# ll
total 8
-rwx------1 root root 1080 Apr 9 10:20 authz
-rwx------1 root root 309 Apr 9 10:20 passwd
4. 編輯passwd添加用戶ningmi:
[users]
# harry= harryssecret
# sally= sallyssecret
hejp = 888888
hejianping= 111111
提示:
1)等號前爲SVN賬號,等號後爲SVN密碼,密碼是明文,注意密碼權限。
2 )更改svnserve.conf時,需要重啓svn,更改authz,passwd文件時不需要重啓。
Kill–USR1 `cat /application/svndata/svn.pid`
Svnserve–d –r /application/svndata/ --pid-file=/application/svndata/svn.pid
5. 配置authz文件:
#[repository:/baz/fuz]
# @harry_and_sally= rw
# * = r
[test.com:/]
hejp = wr #讀寫權限
hejianping = r #只讀權限
[<項目庫>:/項目/目錄]
@<用戶組名> = <權限>
<用戶名> = <權限>
6. 重啓服務:
[root@YIIsvnpasswd]# pkill svnserve
[root@YIIsvnpasswd]# ps -ef|grep svn
root 2916 2487 0 10:47 pts/0 00:00:00 grep --color=auto svn
[root@YIIsvnpasswd]# svnserve -d -r /application/svndata/
[root@YIIsvnpasswd]# ps -ef|grep svn
root 2918 1 0 10:47 ? 00:00:00 svnserve -d -r/application/svndata/
root 2920 2487 0 10:47 pts/0 00:00:00 grep --color=auto svn
至此服務端設置完成。
svn客戶端安裝
1.下載和安裝svn windows 客戶端
2. 新建文件夾svn 右擊svncheckout設置設置取出數據
4,設置svn地址:svn://ip/項目名
5,輸入賬號密碼
6,見到這個頁面就代表取出數據成功了
至此客戶端安裝完成。