当前位置: 代码迷 >> CVS/SVN >> SVN 版本管理 服务器 配备
  详细解决方案

SVN 版本管理 服务器 配备

热度:6533   发布时间:2013-02-26 00:00:00.0
SVN 版本管理 服务器 配置


1..能够搭建svn服务器
2..使用Apache搭建 http, https 访问
3..svn权限控制
4..svn版本库迁移  重新定位IP获取项目
5..svn 版本库的备份 和 还原
6..svn 文件改名 、锁定文件-解锁文件
7..恢复到以前的版本


两种访问方式:svn://    和  http://    一下 经测试成功

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

软件:
httpd-2.2.16-win32-x86-openssl-0.9.8o.msi
Setup-Subversion-1.6.6.msi
TortoiseSVN-1.6.5.16974-win32-svn-1.6.5.msi

http:// Access via WebDAV protocol to Subversion-aware Apache server
https:// Same as http://, but with SSL encryption.
svn:// Access via custom protocol to an svnserve server


---------------------------------------------
使用
http://localhost/svn/project2
http://IP/
访问:
---------------------------------------------

将Subversion\bin中 文件
mod_authz_svn.so   进行目录访问控制
mod_dav_svn.so
intl3_svn.dll
libdb44.dll
复制到 Apache2.2\modules目录下

httpd.conf 增加:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule dav_module modules/mod_dav.so


<Location /svn/>
DAV svn
SVNParentPath "D:/svns/repository/"

AuthType Basic
AuthName "Subversion repositories"
AuthUserFile  D:/svns/repository/project2/users.auth
AuthzSVNAccessFile D:/svns/repository/project2/access.auth
Require valid-user
</Location>


说明:
使用 SVNParentPath 代替 SVNPath 指定多个版本库,可以用多个 Location 标签
AuthType Basic:启用基本的验证,比如用户名/密码对。
AuthName "svnrepos":当一个认证对话框弹出时,出现在认证对话框中的信息。(最好用英文,TortoiseSVN 不支持中文,安装语言包除外。)
AuthUserFile 指定passwd为用户文件,用来验证用户的用户名及密码。
Require valid-user    限定用户只有输入正确的用户名及密码后才能访问这个路径
AuthzSVNAccessFile 指向的是 authz 的策略文件,详细的权限控制可以在这个策略文件中指定


使用Apache 命令产生 md5加密
D:\Program Files\Apache Group\Apache2\bin>htpasswd -cb users.auth jdk jdk
Automatically using MD5 format.
Adding password for user jdk

users.auth(新建) 生成在Apache bin目录下
加密字符串:jdk:$apr1$hn14j9E.$udJyqcLPFhEJ4NWfHX4j5.
---
设置访问权限
access.auth(新建)

[/]
jdk = rw

[project2:/]
*=
jdk = rw

[project1:/]
*=
jdk = rw

---------------------------------------------
使用
svn://localhost/
svn://IP/
访问:
---------------------------------------------

1..安装:Setup-Subversion-1.6.6.msi

2..创建SVN仓库
svnadmin create D:\svns\repository\project1
3.运行服务器 
svnserve -d -r D:\svns\repository\project1
或者 svnserve -d

4..注册window服务
sc create SVNServer binpath= "\"D:\svns\Subversion\bin\svnserve.exe\" --service -r D:\svns\repository\project1" displayname= "SubversionServer" depend= Tcpip start= auto

   卸载 svn 服务
sc delete SVNServer
svnserve -d -r D:\svns\repository\project1 --listen-port 8088 

net stop SVNServer
net start SVNServer

备注:
sc  是windows自带的服务配置程序
binPath  表示svnserve可执行文件的安装路径,
由于路径中的"Program Files"带有空格,
因此整个路径需要用双引号引起来。而双引号本身是个特殊字符,需要进行转移,
因此在路径前后的两个双引号都需要写成\"
--service  参数表示以windows服务的形式运行,
--root  指明svn repository的位置,
service 参数与root参数都作为binPath的一部分,
因此与svnserve.exe的路径一起被包含在一对双引号当中,而这对双引号不需要进行转义。
displayname  表示在windows服务列表中显示的名字,
depend =Tcpip  表示svnserve服务的运行需要Tcpip服务,
start=auto 表示开机后自动运行


--------------------------------------
e:\svn\repo1
svnserve.exe --daemon --root e:\svn

TortoiseSVN中的版本库浏览器URL缩减为:
svn://localhost/repo1
---------------------------------------




5..authz
[groups]
jdks = jdk

[/]
@jdks = rw
* = r

[project1:/]
@jdks = rw
* = r

6..passwd
[users]
jdk = jdk

7..svnserve.conf
[general]

anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
realm = project1 # 范围

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

FAQ:

1、路径或权限不足时将出现错误信息提示:

http://localhost (路径不对)
Error * PROPFIND request failed on '/' PROPFIND of '/': 200 OK (http://localhost)

http://localhost/svn (权限不足)
Error * PROPFIND request failed on '/svn' PROPFIND of '/svn': 403 Forbidden (http://localhost)

http://localhost/svn/repos (正常显示)

http://localhost/repos (权限不允许)
Error * PROPFIND request failed on '/repos' PROPFIND of '/repos': 405 Method Not Allowed (http://localhost)


2、不启动E:\subversion\bin\svnserve.exe ,但启动了ApacheSVN ,访问(tortoiseSVN –> Repo – browser)或提交(SVN Commit)情形如下:

现象:svn://localhost/svn/repos 不能访问或提交,提示:Error * Can't connect to host 'localhost': 由于目标机器积极拒绝,无法连接。 但 file:///e:/svn/repos 和 http://localhost/svn/repos 可以访问或提交。

原因:svn:// 是独立服务器 svnserver 自己的协议。file:/// 是本地访问,即服务器端和客户端在一个机器上



  相关解决方案