一、Subversion簡介
SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統,相較于RCS、CVS,它采用了分支管理系統,它的設計目标就是取代CVS。網際網路上很多版本控制服務已從CVS遷移到Subversion。
二、安裝Subversion
本例中用yum的方式安裝Subversion,也可以采用源碼的方式進行安裝,源碼包下載下傳位址為:
http://subversion.apache.org/download/#pre-releases
Yum 安裝指令為:
[root@localhost ~]# yum -y install subversion
三、svnserve伺服器搭建
1、建立版本庫
軟體安裝完成後,首先要做的是建立一個版本庫,svnadmin工具是subversion軟體所提供的版本管理工具,該工具可以用來建立庫、備份庫、修訂版本等操作。其次我們還需要為版本庫建立一套有效的認證機制以增強版本資料庫的安全性。最後伺服器端所有設定均完成後,啟動伺服器端相應的服務程序即可。
Svnadmin 指令/版本庫路徑 【選項】
指令:create 建立一個新東風版本庫
Hotcopy 版本庫熱備
Lslocks 列印素有的鎖描述
[root@localhost ~] svnadmin create /var/svn/project1
[root@localhost ~] svnadmin hotcopy /var/svn/project1 /var/svn/project1_copy
[root@localhost ~] svnadmin lslocks /var/svn/project1
例子:有一個項目多人開發,用版本控制系統管理代碼,項目代碼儲存在/var/svn目錄下,将項目建立名為web_project
[root@localhost ~] mkdir /var/svn
[root@localhost ~] svnadmin create /var/svn/web_project
通過svnadmin指令已經建立了一個名為web_project的空版本庫,下面我們将使用svn指令将項目代碼導入到版本庫中。Import代表執行導入操作,将本地目錄下的資料導入至剛剛建立的空版本庫web-project中,-m後面跟的是說明性的字元串,可以為任意字元。
[root@localhost ~] svn import /tmp file:///var/svn/web_project -m "new code"
[root@localhost ~] svn list file:///var/svn/web_project/
2、認證與授權
伺服器會根據版本庫目錄下的conf/svnserve.conf檔案中定義的認證與授權政策實作權限控制。
[root@localhost ~] cat /var/svn/web_project/conf/svnserve.conf
[general]
# anon-access = read 設定拒絕匿名賬戶通路,此處可以設定為none、read、write
# auth-access = write 經過認證的賬戶權限可寫
# password-db = passwd 指定賬戶名稱與密碼的存放檔案名,該檔案在conf目錄下
# authz-db = authz 指定基于路徑的通路控制檔案名(可以對檔案或目錄設定權限)
# realm = My First Repository 設定版本庫域,如果兩個版本庫的認證域相同,他們将使用相同的密碼資料
[root@localhost ~] cat /var/svn/web_project/conf/passwd
[users]
# harry = harryssecret 使用者名為harry,,密碼為harryssecret
# sally = sallyssecret 使用者名為sally ,,密碼為sallyssecret
[root@localhost ~] cat /var/svn/web_project/conf/authz
[groups]
# harry_and_sally = harry,sally 定義組,組成員有harry,sally
# harry_sally_and_joe = harry,sally,&joe
# [/foo/bar]
# harry = rw
# &joe = r
# * =
# [repository:/baz/fuz] 對版本庫路徑設定權限,可以設定為需要控制的路徑
# @harry_and_sally = rw harry_and_sally組中的使用者可讀可寫權限
# * = r 其他人隻讀,權限可以設定為隻讀(‘r’)、讀寫(‘rw’),無權限(‘’)
3、啟動svnserve服務
Svnserve -d 以守護程序的方式運作svnserve
--listen-port=port 指定監聽的端口,預設監聽端口号為3690
-r root 為版本庫指定一個虛拟路徑,預設用戶端要指定絕對路徑通路庫
[root@localhost ~] svnserve -d
如果需要僅釋出個别版本給網絡使用者,可以使用svnserve指令的-r選項,該選項後面接版本庫的路徑。
[root@localhost ~] svnserve -d -r /var/svn/
4、用戶端通路
在用戶端通路伺服器版本庫的衆多方法中,指令行的方式是高效、功能完善、無需安裝第三方軟體的一種簡單的方式,svn軟體為我們提供了一個名為svn的指令行程式
Svn 指令 【選項】
選項:--password 密碼
--username 使用者名
--revision(-r) 指定要檢查的特定版本
指令:add 添加檔案、目錄或符号連結
Cat 輸出特定檔案的内容
Checkout URL[@rev][path]
從伺服器版本庫中複制一份副本至本地,URL定位版本庫,通過REV可下載下傳特定版本的資料,PATH為本地工作副本路徑
Commit 将本地工作副本修改後的内容釋出到版本中,簡寫為ci
Copy SRC DST 将工作副本中的一個檔案或目錄複制到版本庫
Delete PATH 從本地工作副本中删除一個項目
Delete url 從版本庫中删除一個項目
Diff 對比兩個版本之間的差别
Import 送出一個路徑的副本至版本庫
Info 顯示本地或遠端版本資訊
[root@localhost ~] svn checkout file:///var/svn/web_project /home
[root@localhost ~] svn co svn://10.10.10.131/web_project /home
[root@localhost ~] Svn commit -m “new code” /home
[root@localhost ~] Svn delete testfile
[root@localhost ~] Svn diff
[root@localhost ~] Svn import -m “new code” /etc file:///var/svn/web_project
[root@localhost ~] Svn info svn://10.10.10.131/var/svn/web_project
除了核心的svn指令,svn軟體包還提供了一個用于對版本庫資料資訊進行簡單查詢的工具svnlook指令,可以幫助使用者完成查詢工作
Svnlook 指令/版本庫路徑 【選項】
選項:--revision(r)指定要檢查的特定版本
指令:author 顯示作者
Cat 顯示版本庫中的檔案内容
Date 顯示時間标記
Log 顯示日志消息
Tree 顯示版本庫資料樹
[root@localhost ~] svnlook author /var/svn/web_project
[root@localhost ~] svnlook author -r 2 /var/svn/web_project 檢視版本2的作者資訊
[root@localhost ~] svnlook author -r 2 /var/svn/web_project test 檢視版本庫中test檔案的内容
用svn圖形工具連接配接版本庫伺服器
工具下載下傳位址:http://tortoisesvn.net/downloads.html
下載下傳完成安裝後,在桌面右鍵就會顯示svn檢出
單擊進行配置
配置完成後就能正常将版本庫同步到本地
四、svnserve+ssh伺服器搭建
1、伺服器端啟動sshd伺服器
[root@localhost ~] service sshd start
[root@localhost ~] chkconfig sshd on
2、伺服器端建立版本庫
[root@localhost ~] svnadmin create /var/svn/web_project
[root@localhost ~] svn import /var/code2 file:///var/svn/web_project2 -m “web code”
3、用戶端通路
[root@localhost ~] svn co svn+ssh://10.10.10.131/var/svn/web_project /web_code2
圖形工具通路
輸入使用者名和密碼後完成版本庫下載下傳
五、apache+svn伺服器搭建
1、建立伺服器版本庫
[root@localhost ~] svnadmin create /var/svn/web_project3
[root@localhost ~] svn import /var/code3 file:///var/svn/web_project3 -m “web code3”
2、安裝apache及相關子產品軟體
[root@localhost ~] yum -y install httpd
[root@localhost ~] yum -y install mod_dav_svn
3.修改apache配置
[root@localhost ~] vim /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so
加載dav_svn子產品
LoadModule authz_svn_module modules/mod_authz_svn.so
加載權限設定子產品
<Location /svn>當使用者的URL是以/svn開始(http://hostname/svn/...)apache會将控制權交于DAV處理
DAV svn
SVNParentPath /var/svn 指定所有版本庫的主目錄
AuthType Basic apache認證方式
AuthName "Authorization Realm" 提示字元
AuthUserFile /var/svn/.pass 賬戶檔案路徑,為了安全,應該隐藏該檔案
Require valid-user 設定僅為有效使用者可以通路
</Location>
[root@localhost ~] chown -R apache:apache /var/svn
[root@localhost ~] htpasswd -c /var/svn/.pass jerry
[root@localhost ~] Service httpd start
[root@localhost ~] Chkconfig httpd on
參考資料:http://wenku.baidu.com/link?url=QULo1I3lN61-J0t-n2o61hcIquD4xohXA6d48fVCHZhfAokZ55U8A7fkFNaFcfmfU9G1keh0FXA2NSZz8ot6fexUhXvLvVNgy7iedHbIQx3