使用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

你可能感兴趣的:(apache,应用服务器,SVN,浏览器,C#)