关于SVN,这里有详细介绍:http://www.oschina.net/p/subversion
OS:CentOS 6.5 x86_64
IP:192.168.11.243,可连接外网。
使用yum来安装SVN:
[root@localhost ~]# yum install subversion
...(中间省略)...
Is this ok [y/N]: y
选择y,yum将为你安装subversion
和perl-URI
两个包。
Installed:
subversion.x86_64 0:1.6.11-10.el6_5
Dependency Installed:
perl-URI.noarch 0:1.40-2.el6
验证:
[root@localhost ~]# svnserve --version
svnserve, version 1.6.11 (r934486)
...(以下省略)
[root@localhost ~]# mkdir /svn #创建SVN数据文件目录
[root@localhost ~]# svnadmin create /svn/project #创建一个名为project的仓库(项目)
执行完以上命令后将在/svn/project
目录下创建多个文件和目录,让我们看下它们的结构:
/svn/project
├── conf #目录:存放配置文件
│ ├── authz ##设置用户的权限
│ ├── passwd ##设置用户、密码
│ └── svnserve.conf ##设置SVN的相关操作
├── db #目录:存放所有的版本数据
│ ├── current
│ ├── format
│ ├── fsfs.conf
│ ├── fs-type
│ ├── min-unpacked-rev
│ ├── rep-cache.db
│ ├── revprops
│ │ └── 0
│ │ └── 0
│ ├── revs
│ │ └── 0
│ │ └── 0
│ ├── transactions
│ ├── txn-current
│ ├── txn-current-lock
│ ├── txn-protorevs
│ ├── uuid
│ └── write-lock
├── format ##存放一个整数,表示当前文件库配置的版本号
├── hooks #目录:放置hook脚本文件
│ ├── post-commit.tmpl
│ ├── post-lock.tmpl
│ ├── post-revprop-change.tmpl
│ ├── post-unlock.tmpl
│ ├── pre-commit.tmpl
│ ├── pre-lock.tmpl
│ ├── pre-revprop-change.tmpl
│ ├── pre-unlock.tmpl
│ └── start-commit.tmpl
├── locks #目录:用来放置subversion锁定数据的目录
│ ├── db.lock
│ └── db-logs.lock
└── README.txt
[root@localhost ~]# vim /svn/project/conf/passwd
[users]
# harry = harryssecret
# sally = sallyssecret
plutonji = 123456
lanthir = abcdef
添加用户很简单,只需在/svn/project/conf/passwd
文件下增加行,一行一个用户,格式为username = password
。这里我增加了两个用户plutonji和lanthir。
[root@localhost ~]# vim /svn/project/conf/authz
[aliases]
[groups]
p_and_l = plutonji,lanthir
[project:/]
plutonji = rw
@p_and_l = r
* =
我们注意authz
这个文件的内容。
[aliases]
下的内容可以设置别名,我们这里没有设置;[groups]
下可以设置用户组,我们创建了p_and_l
组,并将plutonji
和lanthir
放入其中;[project:/]
指的是project这个仓库的根目录,里面设置用户或组访问该目录的权限,权限有三种:rw
读写,r
只读,空值表示无读或写权限。=
号前为用户或组,如果是组则要在组名前加@
,如果是所有用户则是*
。
svnserve.conf
文件以使设置生效[root@localhost ~]# vim /svn/project/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = password
authz-db = authz
svnserve.conf
文件用来控制svnserve
这个进程的设置,它分为两个模块:[general]
和[sasl]
,我们只需将[general]
下几个参数前的注释去掉。特别注意我们将anon-access
的参数值修改为了none
,这个设置项决定匿名用户的读写权限,下面的auth-access
决定通过验证的用户权限。password-db
和authz-db
使用默认值。realm
只有在有多个仓库时才会用到,这里我们先不去动它。[sasl]
下设置是否使用Cyrus SASL的认证方式,细心的朋友在第2步执行svnserve --version
这个命令的时候应该会注意到最后一行有一句话:
Cyrus SASL authentication is available.
就是说我们可以使用Cyrus SASL认证方式来做用户认证。这里我们不使用,所以不需修改[sasl]
的任何配置。对SASL感兴趣的朋友可以自行google一下。
到这里,基本的SVN服务器已经搭建好了,接下来只要在防火墙上打开端口、启动SVN服务就能让plutonji和lanthir使用了:
[root@localhost ~]# vim /etc/sysconfig/iptables
新增一行:-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
(默认端口是3690)
[root@localhost ~]# svnserve -d -r /svn
-d
是说让svnserve以守护进程的方式启动;-r
后接SVN的主目录,这样我们只需访问svn://192.168.11.243/project
就可以了。
首先修改svnserve的启动脚本:/etc/init.d/svnserve
[root@localhost ~]# vim /etc/init.d/svnserve
找到以下这行args="--daemon --pid-file=${pidfile} $OPTIONS"
,这一行是svnserve的启动参数,我们在里面加上--root /svn
,其含义就是上面手动启动服务时的-r /svn
。
完整的一行为:args="--daemon --root /svn --pid-file=${pidfile} $OPTIONS"
这样,服务器端的配置就基本完成了。
我们用Windows下的TortoiseSVN客户端来连接这个仓库。到http://tortoisesvn.net/downloads.html下载相应的版本并安装。
安装完成后,我们可以看到在Windows资源管理器里右击鼠标会多出来两个和SVN有关的选项:
我们在D盘新建SVN文件夹,在SVN下再建立project文件夹,打开project文件夹,空白处右击鼠标,选择TortoiseSVN
→Import...
,在URL of repository下输入svn://192.168.11.243/project
,点击OK,然后输入用户名密码后,再空白处右击鼠标,选择SVN Checkout...
,OK后即可。
更多有关TortoiseSVN客户端的使用这里不再详述。
至此,一个简单的SVN服务器已经搭建成功,对于一个小团队来说已经够用。更多用法,如http方式,等我琢磨完了再来写吧!