svn,源代码管理工具,我就不多介绍了,网上一大堆。下面写一些我最近的对svn开发的过程,一些心得与体会。
都知道,svn服务器一般建在linux端,c端只有一个小乌龟,也挺好用的,最近发现有对svn的网页支持,就搞搞。
当我们在用小乌龟的时候,一般使用的时候是svn的协议,现在配置的是http协议,支持http下载与上传。
svn转http
分为以下几个步骤:
1.安装apache服务,在linux端安装svn服务
2.编辑httpd配置文件
~]# vi /etc/httpd/conf/httpd.conf
<Location /svn> //这一行是定义在网页端输入http://xxx.xxx.xx.x/svn/库,这个svn是基础库,必须要有
DAV svn
SVNParentPath /var/www/svn/ //暂时没有该路径目录,后面会新建,也可以自己定义;
AuthType Basic
AuthName "SVN Repository"
AuthUserFile /etc/svn-auth-accounts //用户认证文件建立后,http连接时的用户名和密码储存文件,svn本身的密码用户配置将不再生效
Require valid-user
</Location>
3.创建svn用户
利用httpd包生成的命令“htpasswd”来创建:
~]# htpasswd -cm /etc/svn-auth-accounts adrian //把用户名“adrian”换成自己定义的用户名
说明:选项“-c”是用来创建密码文件/etc/svn-auth-accounts;
选项“-m”是用来给用户创建MD5加密密码;
注意:如果创建第二个用户时,请勿使用“-c”选项,否则会重新生成文件并覆盖原文件;
4.创建并配置svn库
mkdir /var/www/svn
cd /var/www/svn
svnadmin create repo
chown -R apache. repo/
注意:在创建版本库的目录是,所在的路径一定要是普通用户能够访问的权限,否则,就会有权限限制
5.启定httpd并加入开机启动
systemctl restart httpd
systemctl enable httpd
6.通过浏览器登录
在浏览器输入:http://IP/svn/repo
svn 解决You don't have permission to access /svn/ on this server
用./htpasswd 添加用户后,设置相应的权限,使用浏览器访问提示You don't have permission to access /svn/ on this server
检查配置文件也没有问题,查看apache的error.log日志
发现一条错误提示:
Faied to load the AuthzSVNAccessFIle :Section header expected
解决办法:将权限配置文件的BOM去掉即可。
- 对于多项目库的情况,需要加上AuthzSVNAccessFIle 这个选项,否则权限设置不会生效,加上该选项以后,记得一定要将你的用户进行权限配置,否则,你是不能查看的,就会报1提到的问题。
- 用户的权限的设置和组的权限设置一定要一直,否则,优先组的权限生效
- 那么现在,httpd.conf中Location区块的就变成这个样子了(单仓库没有SVNParentPath,SVNListParentPath,AuthzSVNAccessFile,只有SVNPath):
<Location /svn> #/svn这个名字可以随便换,换成/也是可以的,只要自己感觉方便
DAV SVN
SVNListParentPath on
SVNParentPath /svn/svnroot
AuthType Basic
AuthName ”Subversion repository”
AuthUserFile /svn/passwd.conf
Require valid-user
AuthzSVNAccessFile /svn/authz.conf
</location>
各字段的解释:
主要配置语句如下:
<Location /svn> 意思是Subversion版本可的URL是http://MyServer IP/svn/
DAV svn 告诉Apache是哪个模块响应哪个URL的请求,在这里是SubVersion模块
SVNPath /path 单版本库时使用此项指明版本库的路径,但是在多版本库中不要使用此项
SVNListParentPath on 对于SubVersion1.3或更高的版本,这个指示会列出所有SVNParentPath中的版本库
SVNParentPath /path 告诉Subversion需要查看的版本库位于/path之下
SVNIndexXSLT “/svnindex.xsl” 使用它可以在用浏览器浏览时更好看
AuthType Basic 激活基本认证,就是用户名和密码
AuthName “Subversion repository” 用来说明何时弹出要求用户输入认证信息的认证对话框
AuthUserFile /path/passwd.conf 指定使用的认证密码文件
AuthzSVNAccessFile /path/authz.conf 位置,Subversion版本库的访问控制文件的路径
Require valid-user 指定只有输入了正确的用户名和密码的用户可以访问URL
</Location>
if.svnadmin
if.svnadmin是一个对svn进行网页配置的项目,使用php开发
我使用的是centos7的最小化安装,所以安装这个还需要安装gcc,g++,svn,php,apache,所以我又安装了这几个软件的所有依赖,将其依赖封装成一个安装包,安装时只需要一起安装就好了,安装好就可以使用了。
并且在对php进行了修改。
- 配置好if.svnadmin后,需要使用小乌龟,http的协议进行上传下载操作,这个时候路径需要注意,
在配置svnadmin时,http://192.168.1.60/svn/fa
这个格式里面,http://192.168.1.60/svn时固定的,必须有svn,而svn后面跟的才是你创建的版本库,这一点需要注意
2.web访问if.svnadmin和访问svn版本库内容是不一样的,
访问svnadmin的网址为:http://192.168.1.60/svnadmin/
访问svn版本库内容网址为:http://192.168.1.60/svn/fa/