使用svn和apache打造版本控制服务器

1.安装svn-1.4.4-setup.exe 
2.创建一个目录作为版本仓库:如c:\snv 
3.对版本仓库目录进行初始化:svnadmin create c:\svn 
4.启动版本服务器:svnserve -d -r c:\svn 
5.将文件夹导入到版本仓库中去(d:\test 目录中):svn import svn://localhost 
需要建立环境变量:SVN_EDITOR notepad 
或者svn import svn://localhost -f -c:\log.log 日志文件 
6.认证失败? 
在c:\svn\conf\svnserve.conf 修改配置(默认是匿名用户只有read) 
anon-access = read 下面加入一行 
anon-access = write 
ok了 重启服务 再次提交ok 
7.我们在版本仓库中创建一个虚拟目录project2 
svn mkdir svn://localhost/project2 
8.我们再次提交一个文件夹放置在版本服务的虚拟目录project2中(d:\test2 目录中 包含test。txt) 
svn import svn://localhost/project2 
9.从svn中检出project2(d:\checkout 中) 
svn checkout svn://localhost/project2 
10.修改test.txt内容 并提交:svn commit test.txt 
11.如果文件锁定 可以用 svn cleanup 命令解锁 
12.删除test.txt 通过update命令重新获取:svn update test.txt 
svn 权限 
13.我们希望可以掌控svn的权限 
anon-access = read 
anon-access = write 
   注释掉。这样就不可以匿名修改了,不过还是可以匿名检出。因为svn默认是允许匿名检出的 
我们新增一个anon-access = none 这样匿名检出也禁止了 
14.我们添加认证用户 
   将password-db = passwd 的注释取消 
   打开conf下的passwd文件 
   [users] 
   # harry = harryssecret 
   # sally = sallyssecret 
   按此格式分别键入用户 = 密码即可 
svn+apache 
svn的权限确实不敢恭维,现在我们将svn和apache进行整合 
分别下载svn对应的apache版本 
1.apache的安装 一路next即可 
2.将svn安装目录bin下的mod_dav_svn.so,mod_authz_svn.so文件 复制到apache目录下的modules下 
修改httpd.conf文件,我这里是145,146行的注释去掉 
LoadModule dav_module modules/mod_dav.so 
LoadModule dav_fs_module modules/mod_dav_fs.so 
3.在173行增加我们复制的文件载入 
LoadModule dav_svn_module modules/mod_dav_svn.so 
LoadModule authz_svn_module modules/mod_authz_svn.so 
4.在文件结尾增加我们的目录映射 
<Location /svn> 
DAV svn 
SVNPath c:/svn 
</Location> 
5.重启apache 我们就可以通过:http://localhost/svn 浏览访问版本库了(不过没有任何限制) 
6.我们需要在<Location /svn></Location>配置验证信息 
<Location /svn> 
DAV svn 
SVNPath c:/svn 
AuthType Basic 
AuthName "Subversion Repository" 
AuthUserFile c:/passwords 
Require valid-user 
</Location> 
AuthType表示验证类型,这里我们采用BASIC即基本方式,也是最常用的验证方式。 
AuthName表示出现登录对话框时,窗口的标题名。 
AuthUserFile表示用户登录信息的存放文件,这里我们将该文件保存为E:/passwd/passwords,目前该文件还不存在,不过不要着急,我们稍后就会创建该文件。 
Require valid-user 表示只有认证的用户才能访问,否则匿名用户也可以访问。 
7.我们创建登陆信息文件 
apache bin目录下的工具 htpasswd.exe 
创建文件 并建立一个用户 
htpasswd –c c:\passwords user1 
会让你输入密码 采用的md5加密 
htpasswd c:\passwords user2 
密码采用明文 
htpasswd -p c:\passwords user3 
8.重启apache服务,我们访问和浏览需要输入用户和密码了 
也可以使用svn工具进行管理 不过协议变成http了而不是svn了 

9.多版本库管理,我们将之前的 SVNPath c:/svn 修改为 SVNParentPath c:\svn 
更改后已经无法浏览仓库内容了, 
这是因为之前创建的仓库都是以svn为根路径的,所以一旦将它改成ParentPath后就无法正常访问了。 
实际应用中,我们要import一个项目到SVN上,一般都不会import到根目录中,而是import到项目特定的目录中, 
这样当从SVN中检出时我们也只会检出特定的项目,而不是将SVN中所有的项目全部检出来,因为仓库中可能有很多个其他项目。 
10.我们在svn目录下创建两个目录myproject1。myproject2 
svnadmin create c:/svn/myproject1 
svnadmin create c:/svn/myproject2 
采用SVNParentPath方式,新建仓库时也并不需要重启Apache服务器, 
因为SVNParentPath指定的路径就是仓库的父目录,我们可以通过浏览器查看刚才import的项目。 
这里注意地址:http://localhost/svn/project1,如果输入http://localhost/svn,则无权限访问,因为默认情况下我们只能访问其中的子仓库。 
11.如何允许匿名用户读取 
httpd.conf中的Require valid-user改为如下: 
<LimitExcept GET PROPFIND OPTIONS REPORT> 
Require valid-user 
</LimitExcept> 
12.我们需要更细致的权限设置, 
SVN仓库中有很多的子仓库,每个子仓库中又有很多目录和文件,那么我需要配置以便使某些用户可以访问某些仓库, 
即可以读写;而另外一些用户只能读不能写,不过这两种类型的用户都需要输入认证信息方能进行操作 
将httpd.conf内容修改为 
<Location /svn> 
DAV svn 
SVNParentPath C:\svn 
AuthzSVNAccessFile C:/policy 
AuthType Basic 
AuthName "Subversion Repository" 
AuthUserFile C:/passwords 
Require valid-user 
</Location> 
policy文件内容为权限信息 如下 
[project1:/] 
user1=rw 
user2=r 
user3= 
对于project1路径,user1用户可读可写,而user2用户只读,另外的用户user3不能读也不能写。这就定义了SVN仓库的访问策略。 
这里也可以通过分组进行定义 如下 
[groups] 
developers=user1,user2 
testers=user3 
[project1:/] 
@developers=rw 
@testers= 
[project2:/] 
@developers=rw 
@testers=rw 
13.备份版本库 
svnadmin hotcopy C:\svn E:\backup
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值