安装
一、
获取资源
(1)
apache Http Server 2.0.55
。
用于和
SVN
整合
(2)
svn-1.3.2-setup.exe SVN
服务器端
(3)
TortoiseSVN-1.3.2.5840-svn-1.3.0.msi SVN
的客户端
(4)
LanguagePack_1.3.2_zh_CN.exe tortoise
的语言包
(5)
SVNService.zip SVN
的一个第三方工具,将
SVN
用做
windows
后台服务
二、
安装
上面的
1
、
2
、
3
、
4
均为直接安装即可,注意在安装完
3
再安装四的时候要重启一下,然后将
5
解压到
2
中安装目录下的
bin
目录中。至此安装完毕
三、
配置
没什么好特别配置的。基本上安装好了就可以使用,使用方式是用
3
的客户端工具选择一个空的文件夹右键
----
à
在此创建文件库。一个
SVN
的仓库文件就创建完毕。因为要考虑到后面的
apache
的整合所以建议名字不要太专一性,然后转到项目或者你想加入版本控制的文件或者文件夹上面,点右键选择导入,在弹出的对话框里面输入仓库地址,执行导入完毕后一个完整的文件版本诞生了。
注意:在导入时
3
中的客户端默认是导入当前文件夹的子文件夹,所以如果你想将当前目录也导入的话,请将他放入一个文件夹内再执行导入操作。
然后是仓库的配置:转到仓库目录的
conf
中,寻找
svnserve.conf
文件并将其中的
[general]
anon-access = read
auth-access = write
password-db = passwd
realm = My First Repository
前面的
#
号去掉,然后去掉他前面的空格。保存。
这里的意思是:
anon-access
指
匿名访问的权限,可以是
read,write,none,
默认为
read
auth-access
指
认证用户的权限,可以是
read,write,none,
默认为
write
password-db
指
密码数据库的路径,去掉前面的,存的是认证用户的用户名和密码,
username=passwd
然后是修改
passwd
文件
1.
去掉
[users]
前面的
#,
否则
svn
只能以匿名用户登录,客户端不会出现登录窗口,除非你的
anon
不为
none,
否则将返回一个错误。
2.
添加用户名和密码
username=password
四、
启动
SVN
服务器
对于单个代码仓库
启动命令
svnserve -d -r /home/svnrepo --listen-host 192.168.100.200
其中
-d
表示在后台运行,
-r
指定服务器的根目录,这样访问服务器时就可以直接用
svn://
服务器
ip
来访问了。如果服务器有多
ip
的话
--listen-host
来指定监听的
ip
地址
.
我们可以在
svn
客户端中通过
svn://192.168.100.200
来访问
svn
服务器
对于多个代码仓库
,
我们在启动时也可以用
-r
选项来指定服务器根目录
,
但访问时需要写上每个仓库相对于
svn
根目录的相对路径
.
比如
,
我们有两个代码仓库
/home/repoa
和
/home/repob,
我们用
svnserve -d -r /home --listen-host 192.168.100.200
来启动
,
那么在客户端访问时可以用
svn://192.168.100.200/repoa
和
svn://192.168.1.200/repob
来分别访问两个项目
启动完成以后
,
我们可以用
ps aux|grep svnserv
来查看是否存在
svnserve
进程
.
五、
开放服务器端口
svn
默认端口是
3690
,你需要在防火墙上开放这个端口。
也可以通过
svnserve
的
--listen-port
选项来指定一个已经开放的其他端口
,
不过这样的话客户端使用也必须家上端口
,
如
svn://192.168.100.200:9999/
。
六、
与
apache
的整合
各種存取 repository 的方法
SVN
設計時已經把 repository 的存取抽象化了,所以理論上,只要是可以進行資料傳送的方法或通訊協定,就可以用來存取 repository。
實際上,SVN 目前能支援的存取方法還是有限的,不過也比它的前輩 CVS 多了一些,而且未來還可以繼續擴充。 SVN 存取 repository 的方法要在 URL 的通訊協定部分指定,可以有:
file:///
直接存取本地檔案系統裡的 repository。
http://
透過支援 SVN 的 Apache 伺服器 (以 module 的形式),以 WebDAV 存取
https://
一樣是用 WebDAV,但加上 SSL
svn://
以自訂的通訊協定,連接 svnserve 來存取 repository
svn+ssh://
和 svn:// 一樣,但透過 ssh 協定作 tunnel
另一种比较常用的使用SVN的方式是将其与apache整合。通过http协议来访问代码,通过web界面来浏览察看,通过http服务器的安全控制来进行权限认证。
安装要点记录如下:
0
假设安装Apache至D:\Apache2
1
复制%SVN_HOME%\bin\libdb42.dll、libeay32.dll、以及 ssleay32.dll到%APACHE_HOME%\bin
2
复制%SVN_HOME%\httpd\*.so到%APACHE_HOME%\modules
3
修改%APACHE_HOME%\conf\httpd.conf,增加或修改:
|
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
|
4
在<VirtualHost>中增加/svn的<Location>
|
<Location /svnserver>
DAV svn
SVNPath D:/SVNDIR/taowap
</Location>
|
5
重起apache,通过浏览器访http://localhost/svnserver可看到Subversion的信息。
在访问控制的方面,可以采用windows域用户身份验证。此处也可以用mysql,passwd文件,LDAP等其他任何Apache支持的验证方式。
此处我采用文件方式,首先建立一个保存密码的文件,如果不需要对密码加密,可增加-p参数生成plain text。
%APACHE_HOME%\bin\htpasswd –c -p d:\passwd\passwords user1
生成的文件内容如下:
|
#
格式username:password
user1:123456
|
如果要按照Group的方式来控制权限,可同时建立一个groups文件,内容如下:
|
#
格式:GroupName: username1 username2
svngroup: user1 user2
|
在httpd.conf中的/svnserver处增加权限控制部分:
|
<Location /svnserver>
DAV svn
#
指向SVN Repository的ROOT
SVNPath d:/svnrepo
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile d:/passwd/passwords
AuthGroupFile d:/passwd/groups
Require group svngroup
</Location>
|
重起服务器,浏览http://localhost/svnserver,出现安全对话框,输入用户名密码即可成功。
七:
附:
svnserve [
选项
]
有效选项:
-d [--daemon] :
后台模式
--listen-port arg :
监听端口(后台模式)
--listen-host arg :
监听主机名或
IP
地址(后台模式)
--foreground :
在前台运行(调试时有用)
-h [--help] :
显示这个帮助
--version :
显示版本信息
-i [--inetd] : inetd
模式
-r [--root] arg :
服务根目录
-R [--read-only] :
不赞成;使用档案库配置文件
-t [--tunnel] :
隧道模式
--tunnel-user arg :
隧道用户名(模式是当前用户
UID
的名字)
-T [--threads] :
使用线程代替进程
-X [--listen-once] :
监听一次(调试时有用)
参考:http://doc.zoomquiet.org/data/20050617140221/
部分内容参考至网上。