已验证用户给予写权限 (当然也能读)
密码数据存放到passwd文件中
passwd
[users]
#harry = harryssecret
#sally = sallyssecret
admin=admin111
lvzy=lvzy111
含义是:
增加了admin这个用户,密码为admin111
增加了lvzy这个用户,密码为lvzy111
Author
[groups]
# harry_and_sally = harry,sally
进行用户组的配制
比如:
Lantian=admin,lvzy
含义是将admin,lvzy加入到组Lantian中去
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
进行文件权限的设置
比如存在libs这个文件,而我只希望admin一个人可以读写,lvzy有读权限,未授权的无法访问,则可以这样写
[/libs]
admin=rw
lvzy=r
*=none
注:*表示匿名用户
四.测试SVN
在客户端(当然也可以是本机),右击点TortoiseSVN-》Repo_Browser在弹出的URL中输入svn://服务器IP,点击OK,这
时会要求你输入用户名和密码,你将你在passwd中设置的用户和密码在这里输入就可以了,然后你就可以看到版本库的内容,当然刚开始是新的,具体的客户
端使用请查看其他文档。
五. 说明
服务器端防火墙应关闭,否则,将直接影响访问速度或不可访问。
服务器端的安装可以完全按照以上四步的操作进行(可以不在服务器上安装客户端,即不执行二.4步骤);客户端的安装,只需要执行二.4步操作,安装客户端软件即可。客户端使用时,打开IE浏览器按第四步骤输入:svn://IP 即可。
安装
一、 获取资源
(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] : 监听一次(调试时有用)
如果你的系统是 WinXP,在安装 Office2003 时出现了“不能访问 Windows Installer
服务,可能是你在安全摸式下运行 Windows 或 Window Installer 没有正确安装”错误(实际上是所有使用 Windows
Installer 服务安装的 MSI 格式程序均不能正常安装);在“服务”里查看“Windows Installer
”服务的状态,一般为停用,当你试图启用此服务,会发现此服务已被系统禁用,或则 Windows Installer
服务已被标记为删除;而当你尝试重新安装 Windows Installer 服务时,系统提示“指定的服务已存在”——那这篇文章就是你想要的了。
解决方法(在 WinXP/Win2000 上通过):
- 先用记事本编写如下内容,并保存为 installer.reg 格式文件,双击将文件导入注册表;
- 运行“CMD”命令提示符,输入“msiexec /regserver”并回车;
- 无须重新启动,即刻搞掂!
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSIServer]
"ImagePath"=-
"ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,\
00,73,00,69,00,65,00,78,00,65,00,63,00,2e,00,65,00,78,00,65,00,20,00,2f,00,\
56,00,00,00
; ImagePath = %SystemRoot%\System32\msiexec.exe /V