`

使用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
分享到:
评论

相关推荐

    Svnmanager 1.04

    8. 兼容性:Svnmanager 1.04通常与主流的SVN服务器版本兼容,如Apache Subversion 1.6.x至1.9.x系列。 使用Svnmanager 1.04,您可以轻松地对svnmanager-1.04压缩包进行解压安装,按照官方文档的步骤配置服务器环境...

    VisualSVN-Server-4.2.1-64bit

    VisualSVN Server是一款专为Windows平台设计的Subversion(SVN)服务器软件,它以其直观的用户界面、易于管理和强大的功能集,成为企业级版本控制系统中的佼佼者。本次我们关注的是VisualSVN Server的4.2.1版本,该...

    路由器刷OpenWrt打造全能服务器(四)动态域名.doc

    - **SVN服务端安装与配置:**OpenWrt还可以用来搭建版本控制系统如Subversion(SVN)服务器,方便团队成员进行代码管理和版本控制。 - **FTP服务:**通过安装FTP服务器软件,可以轻松地与外界分享文件。 - **Web...

    ant_svnant_jar包 文档

    而SVN(Subversion)作为广泛使用的版本控制系统,能够有效地管理和跟踪代码的变更。当Ant与SVNant结合使用时,可以实现自动化地从SVN仓库检出、更新和提交代码,极大地提高了开发效率。本文将深入探讨Ant与SVNant的...

    MyEclipse_Application_Server_Quickstart

    MyEclipse集成了多种版本控制系统,如Git、SVN等。在项目中,你可以直接进行版本控制操作,如提交、更新、分支管理等,这对于团队协作至关重要。 8. **测试与性能优化** MyEclipse提供了单元测试工具,如JUnit,...

    开源缺陷跟踪系统

    9. **版本控制集成**:尽管WebIssues本身并不包含版本控制系统,但可以通过API与其他版本控制工具(如Git或SVN)集成,实现问题与代码变更的关联。 10. **报告与统计**:系统提供报告生成功能,可以生成各种统计...

    EclipsePHP Studio 1.2.2 (EPP)

    它可以与各种Web服务器如Apache、Nginx等配合使用,进行实时预览和调试。 8. **插件生态系统**: 基于Eclipse的插件系统,用户可以安装更多的扩展,如PDT(PHP Development Tools)、XDebug等,进一步增强IDE的...

    books IntelliJ IDEA in Action

    4. **版本控制集成**:讲解与Git和其他版本控制系统(如SVN)的集成,包括提交、分支管理、合并冲突等操作,让开发者能无缝地在IDEA中进行版本控制。 5. **调试与测试**:介绍如何设置断点、单步执行、查看变量值,...

    深入浅出VisualSVN-Server

    它不仅包含了Subversion核心服务,还集成了Apache Web服务器,以及一个易于使用的管理控制台,使得用户能够轻松地安装、配置和管理SVN服务器。 - **版权信息**:该文档的版权所有者为VisualSVN团队,版权所有时间为...

    SoUP! Framework-开源

    11. **.svn** 目录:这是Subversion版本控制系统的工作副本文件,表明项目使用Subversion进行版本控制,但对用户来说通常是透明的。 ### 二、开发与使用 1. **安装与配置**:将SoUP! Framework 下载到本地,根据...

    猪哥的嵌入式linux公房菜

    - **版本控制系统**:介绍SVN、Mercurial和Git。 - **常用命令**:比较不同VCS的命令语法。 **15. 利用vmmaretools来实现共享的具体操作** - **安装步骤**:安装vmware tools。 - **配置方法**:设置共享文件夹。 ...

Global site tag (gtag.js) - Google Analytics