﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-berrytiger-随笔分类-版本管理</title><link>http://www.cppblog.com/berrytiger/category/2526.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 22 May 2008 22:52:33 GMT</lastBuildDate><pubDate>Thu, 22 May 2008 22:52:33 GMT</pubDate><ttl>60</ttl><item><title>关于SVN的安装问题！（转载自http://www.blogjava.net/forget/archive/2006/08/08/62304.html）</title><link>http://www.cppblog.com/berrytiger/archive/2006/08/25/11704.html</link><dc:creator>Lift&amp;Program</dc:creator><author>Lift&amp;Program</author><pubDate>Fri, 25 Aug 2006 11:10:00 GMT</pubDate><guid>http://www.cppblog.com/berrytiger/archive/2006/08/25/11704.html</guid><wfw:comment>http://www.cppblog.com/berrytiger/comments/11704.html</wfw:comment><comments>http://www.cppblog.com/berrytiger/archive/2006/08/25/11704.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/berrytiger/comments/commentRss/11704.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/berrytiger/services/trackbacks/11704.html</trackback:ping><description><![CDATA[安装 

一、             获取资源 

（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/

部分内容参考至网上。 

<img src ="http://www.cppblog.com/berrytiger/aggbug/11704.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/berrytiger/" target="_blank">Lift&Program</a> 2006-08-25 19:10 <a href="http://www.cppblog.com/berrytiger/archive/2006/08/25/11704.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>