Centos搭建SVN服务器

搭建SVN服务,有效的管理代码,以下三步可以快速搞定。
1、安装         

#yum install subversion

  判断是否安装成功
#subversion -v

  svnserve, version 1.6.11 (r934486)
出现上面的提示,说明安装成功。

   如果提示如下:-bash: subversion: command not found
   经过查找发现:
  [root@]# svnserve --version
svnserve, version 1.6.11 (r934486)
   compiled Apr 11 2013, 16:13:51

Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository back-end (FS) modules are available:

* fs_base : Module for working with a Berkeley DB repository.
* fs_fs : Module for working with a plain file (FSFS) repository.

Cyrus SASL authentication is available.


有了SVN软件后还需要建立SVN库。
#mkdir /opt/svn/repos
#svnadmin create /opt/svn/repos
执行上面的命令后,自动在repos下建立多个文件, 分别是conf, db,format,hooks, locks, README.txt。

   

2、配置

     上面的操作很简单,几个命令就搞定, 下面的操作也不难。
     进入上面生成的文件夹conf下,进行配置,   有以下几个文件authz, passwd, svnserve.conf
     其中authz 是权限控制,可以设置哪些用户可以访问哪些目录,   passwd是设置用户和密码的,    svnserve是设置svn相关的操作。


   2.1先设置passwd
   

[users]
# harry = harryssecret
# sally = sallyssecret
hello=123
用户名=密码

这样我们就建立了hello用户, 123密码  


   2.2 再设置权限authz

[/]
hello= rw

意思是hello用户对所有的目录有读写权限,当然也可以限定。
如果是自己用,就直接是读写吧。



2.3最后设定snvserv.conf

anon-access = none # 使非授权用户无法访问
auth-access = write # 使授权用户有写权限
password-db = password
authz-db = authz   # 访问控制文件
realm = /opt/svn/repos # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。
采用默认配置. 以上语句都必须顶格写, 左侧不能留空格, 否则会出错.


好了,通过以上配置,你的svn就可以了。

3、连接

启动svn: svnserve -d -r /opt/svn/repos

如果已经有svn在运行,可以换一个端口运行
svnserve -d -r /opt/svn/repos --listen-port 3391

这样同一台服务器可以运行多个svnserver

好了,启动成功后,就可以使用了。
建议采用TortoiseSVN, 连接地址为: svn://your server address (如果指定端口需要添加端口  :端口号)

连接后可以上传本地的文件,有效的管理你的代码。
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
一,Subversion有两种运行方式

一种是基于Apache Http Server,另外一种是Subversion Standalone Server。

以下是基于httpd的svn的安装

二,安装svn

yum install  subversion mod_dav_svn

1),确定已经安装了svn模块:mod_dav_svn

[root@svn zhangying]# cd /etc/httpd/modules/
[root@svn modules]# ls |grep svn
mod_authz_svn.so
mod_dav_svn.so
[root@svn modules]#

2),看一下svn是否已安装成功

[root@svn modules]# svn --version
svn, version 1.4.2 (r22196)
compiled Aug 10 2009, 18:00:04

Copyright (C) 2000-2006 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository access (RA) modules are available:

* ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol.
- handles 'http' scheme
- handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
- handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
- handles 'file' scheme

三,创建仓库,修改svn配置文件

1),加载模块

[root@svn conf.d]#cd /etc/httpd/conf.d

[root@svn conf.d]# vi subversion.conf

添加以下二行

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

2),创建仓库,以及仓库目录的设置

# mkdir -p /var/www/svn

# cd /var/www/svn

# svnadmin create test

# chown -R apache.apache test

# vi /etc/httpd/conf.d/subversion.conf

<Location /svn>
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 "Subversion repository"
AuthzSVNAccessFile /var/www/svn/repository/authz.conf
AuthUserFile /var/www/svn/repository/authfile
Require valid-user
#   </LimitExcept>
</Location>

3),添加用户

下面建立可访问用户文件

# htpasswd -c /var/www/svn/repository/authfile 用户名要增加用户,则使用下面命令

# htpasswd /var/www/svn/repository/authfile 用户名

//第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,完成对用户的增加
当你用页面访问svn时,apache要进行的密码确认

4),权限分限
# nano /var/www/svn/repository/authz.conf
 [test:/] //这表示,仓库test的根目录下的访问权限
 zhangy = rw //test仓库zhangy用户具有读和写权限
 hunk = r //test仓库hunk用户具有读权限
 [/] //这个表示在所有仓库的根目录下
 * = r //这个表示对所有的用户都具有读权限
 #[groups] //这个表示群组设置
 #svn1-developers = zhangy, hunk //这个表示某群组里的成员
 #svn2-developers = zhangy
 #[svn1:/]
 #@svn1-developers = rw //如果在前面加上@符号,则表示这是个群组权限设置
搞好之后重起apache
# service httpd restart

5),svn的一些操作check out操作
[[email protected]] cd /var/www
[[email protected]] svn co http://127.0.0.1/svn/test  /var/www/html


updatet操作
[[email protected]] cd /var/www
[[email protected]] svn update
edit和commit操作
[[email protected]] cd /var/www
[[email protected]] vi  test.txt -- 修改一些东西后.
[[email protected]] svn commit -m "Added a line to test.txt."
Sending        test/test.txt
Transmitting file data .
Committed revision 2.

add和delete操作[[email protected]] cd /var/www
[[email protected]] vi test2.txt -- 添加一个新文件.
[me@mylappy ~] svn add test2.txt
A         test2.txt

[me@mylappy ~] svn commit -m "new one"
Adding         test2.txt
Transmitting file data .
Committed revision 3.

删除操作把add换成delete就可以了

相关推荐