SubVersion版本控制

源自《Linux 運維之道》丁一明編著 一書的總結web

三種訪問方式數據庫

功能apache

Apache+DAVubuntu

Svnservevim

Svnserve+SSH瀏覽器

認證安全

http基本認證、LDAP服務器

支持md5session

Ssh認證運維

權限

對版本總體設置,也能夠指定設置權限

客隊版本總體設置權限,也能夠指定目錄

僅對版本庫總體設置權限

加密

支持ssl加密

支持ssh加密

日誌

完善的apache日誌

速度

設置

相對複雜

簡單

相對簡單

安裝:

[root@localhost tcpcliserv]# yum -y install subversion

建立版本庫,利用svnadmin工具

svnadmin:命令create 建立一個新的版本庫

hotcopy 版本庫熱備份

lslocks 打印全部的鎖

[root@localhost tcpcliserv]# mkdir /var/svn

[root@localhost tcpcliserv]# svnadmin create /var/svn/web_project

[root@localhost tcpcliserv]# mkdir /var/web_code

[root@localhost tcpcliserv]# touch /var/web_code/test

[root@localhost tcpcliserv]# svn import /var/web_code/ file:///var/svn/web_project/ -m "Initial Data"

Adding /var/web_code/test

Committed revision 1.

[root@localhost tcpcliserv]# svn list file:///var/svn/web_project

test

創建有效的認證機制以加強版本數據庫的安全性

[root@localhost tcpcliserv]# vim /var/svn/web_project/conf/authz

[root@localhost tcpcliserv]# vim /var/svn/web_project/conf/passwd

[root@localhost tcpcliserv]# vim /var/svn/web_project/conf/svnserve.conf

[root@localhost tcpcliserv]# svnserve -d -r /var/svn/

其中authz文件,添加內容

[groups]

admins=harry,sally #定義組,組成員有harry和sally

[/] #對版本庫根路徑設置權限,能夠設置爲須要控制的路徑

@admins=rw #admins組中的用戶可讀、可寫權限

*=r #其餘全部的人只讀,權限能夠設置爲’r’只讀,讀寫’rw’、無權限’ ‘

Passwd添加內容

[users]

harry = 123

sally = 123

svnserve.conf添加內容

[general]

anon-access=none

auth-access=write

password-db=passwd

authz-db=authz

real=My First Repository

啓動服務器相應的進程

啓動svnserve服務

-d 以守護進程方式運行svnserve

--listen-port=port 指定監聽的端口,默認監聽端口號爲3690

-r root 爲版本庫指定一個虛擬路徑,默認客戶端要指定絕對路徑訪問庫

[root@localhost tcpcliserv]# svnserve -d -r /var/svn/

Svn服務默認監聽端口3690,注意要設置。同時要注意在authz文件中爲目錄設置權限,路徑應該爲[web_project:/]。

客戶端訪問

root@ubuntu:/home/tempal# svn co svn://192.168.118.253/project1 mine

svn: No repository found in 'svn://192.168.118.253/project1'

root@ubuntu:/home/tempal# svn co svn://192.168.118.253/web_project mine

認證領域: <svn://192.168.118.253:3690> f2093f5e-85b5-4222-ae8e-c7d091ab3536

「root」的密碼:

認證領域: <svn://192.168.118.253:3690> f2093f5e-85b5-4222-ae8e-c7d091ab3536

用戶名: harry

「harry」的密碼:

-----------------------------------------------------------------------

注意! 你的密碼,對於認證域:

<svn://192.168.118.253:3690> f2093f5e-85b5-4222-ae8e-c7d091ab3536

只能明文保存在磁盤上! 若是可能的話,請考慮配置你的系統,讓 Subversion

能夠保存加密後的密碼。請參閱文檔以得到詳細信息。

你能夠經過在「/root/.subversion/servers」中設置選項「store-plaintext-passwords」爲「yes」或「no」,

來避免再次出現此警告。

-----------------------------------------------------------------------

保存未加密的密碼(yes/no)? yes

A mine/test

取出版本 1。

root@ubuntu:/home/tempal#

image

命令:

svn命令:客戶端命令行工具

Svnlook命令:subversion檢查工具

[root@localhost tcpcliserv]# svnlook author /var/svn/web_project/

Root

Svnserve+SSH服務器。

客戶端須要使用ssh程序鏈接遠程服務器的sshd服務,經過ssh認證機制驗證帳戶身份後,再自動啓動svnserve服務。因此服務器端不須要提早啓動svn服務。

[root@localhost tcpcliserv]# mkdir /var/code2

[root@localhost tcpcliserv]# touch /var/code2/test

[root@localhost tcpcliserv]# svnadmin create /var/svn/web_project2

[root@localhost tcpcliserv]# svn import /var/code2 file://var/svn/web_project2 -m "Web code"

svn: Unable to open an ra_local session to URL

svn: Local URL 'file://var/svn/web_project2' contains unsupported hostname

[root@localhost tcpcliserv]# svn import /var/code2 file:///var/svn/web_project2 -m "Web code"

Adding /var/code2/test

在客戶端訪問

Committed revision 1.

[root@localhost tcpcliserv]# service sshd start

[root@localhost tcpcliserv]# chkconfig sshd on

image

Apache+SVN服務器搭建

雖然前面兩種服務器已經知足多數人的使用需求,但當客戶端沒有任何工具可使用時,咱們還能夠建立基於Apache的SVN服務器,這樣只要客戶端有瀏覽器就能夠訪問版本庫服務器。使用Apache Web Server訪問版本庫須要加載mod_dav和mod_dav_svn模塊。

[root@localhost tcpcliserv]# gedit /etc/httpd/conf.d/subversion.conf

[root@localhost tcpcliserv]# chown -R apache.apache /var/svn

[root@localhost tcpcliserv]# chcon -R -t httpd_sys_content_t /var/svn

[root@localhost tcpcliserv]# htpasswd -c /var/svn/.pass jerry

New password:

Re-type new password:

Adding password for user jerry

[root@localhost tcpcliserv]# service httpd start

Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName

[ OK ]

[root@localhost tcpcliserv]# chkconfig httpd on

更改的/etc/httpd/conf.d/subversion.conf 內容以下:爲了讓Apache Web Server能夠讀取SVN版本中的數據,要確保mod_dav和mod_authz_svn兩個模塊會被加載。

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

#添加內容

<Location /svn>

#當用戶的URL是以/svn開始(http://hostname/svn/...),Apache會將控制權交給DAV處理

DAV svn

SVNParentPath /var/svn

#經過SVNParentPath指定全部版本庫的主目錄(發佈全部的版本庫)

# Limit write permission to list of valid users.

# Require SSL connection for password protection.

# SSLRequireSSL

AuthType Basic #Apache認證方式

AuthName "Authorization Realm"#提示字符

AuthUserFile /var/svn/.pass#帳戶文件路徑,爲了安全,應該隱藏該文件

Require valid-user#設置僅爲有效用戶能夠訪問

</Location>

#除了上面兩個模塊,還要確保/etc/httpd/conf/httpd.conf文件中dav_module模塊也會被加載

# Example configuration to enable HTTP access for a directory

# containing Subversion repositories, "/var/www/svn". Each repository

# must be both:

#

# a) readable and writable by the 'apache' user, and

#默認Apache的啓動用戶爲apache,因此須要apache用戶對版本庫有讀寫權限

# b) labelled with the 'httpd_sys_content_t' context if using

#若是開啓了SELinux,這版本庫目錄須要有httpd_sys_content_t安全上下文標籤。

# SELinux

#

#

# To create a new repository "http://localhost/repos/stuff" using

# this configuration, run as root:

#

# # cd /var/www/svn

# # svnadmin create stuff

# # chown -R apache.apache stuff

# # chcon -R -t httpd_sys_content_t stuff

#

#<Location /repos>

# DAV svn

# SVNParentPath /var/www/svn

#

# # Limit write permission to list of valid users.

# <LimitExcept GET PROPFIND OPTIONS REPORT>

# # Require SSL connection for password protection.

# # SSLRequireSSL

#

# AuthType Basic

# AuthName "Authorization Realm"

# AuthUserFile /path/to/passwdfile

# Require valid-user

# </LimitExcept>

#</Location>

 

image

image

相關文章
相關標籤/搜索