centos 搭建 SVN 服务

本贴最后更新于 2040 天前,其中的信息可能已经斗转星移

官网链接: http://subversion.apache.org/packages.html

1. 安装

  • 安装、
yum install subversion
  • 测试是否安装成功
svnserve --version

  • 查看或更改 svn 指向目录和端口(可以使用默认配置,无需修改)
vi /etc/sysconfig/svnserve
编辑示例:
OPTIONS="-r /data/svn --listen-port 3661"

2. 建立版本库

svnadmin create /var/svn/solo

3. svn 配置文件

  • svnserve.conf
vi /var/svn/solo/conf/svnserve.conf 

编辑示例:
[general]
anon-access = none      #控制非鉴权用户访问版本库的权限
auth-access = write      #控制鉴权用户访问版本库的权限
password-db = passwd     #指定用户名口令文件名
authz-db = authz      #指定权限配置文件名
realm = solo        #指定版本库的认证域,即在登录时提示的认证域名称
  • passwd
 vi /var/svn/solo/conf/passwd 

编辑示例:
[users]
chenchen = chenchen    #用户,密码
maggie = maggie    #用户,密码
  • authz
vi /var/svn/solo/conf/authz 
编辑示例:
[groups]
g_admin = chenchen
g_solo = maggie

[solo:/]
@g_admin = rw

[solo:/solo]
@g_solo = rw

4. 启停 svn

  • 启停 svn
systemctl start svnserve.service
systemctl stop svnserve.service
  • 查看 svn 状态: 默认是 3690 端口
ps aux|grep svnserve
systemctl status svnserve.service
  • 设置开机启动
systemctl enable svnserve.service

5. 问题 1: node remains in conflict

执行 checkout 命令下载代码:

svn checkout svn://xxx.xxx.xxx.xxx/solo/solo /home/web/www/solo --username chenchen

中间卡住了一下, 其实是正常情况但是我却给强行停止了。 然后我再使用 svn up 更新代码时就出现了 node remains in conflict 这个错。

网上搜索了一下应该是因为我强行停止导致文件冲突了, 需要 svn revert .还原一下。如果不行就强行删掉这个文件夹 svn remove --force filename, 然后重新创建一个文件夹下载。参考链接: https://blog.csdn.net/u011628250/article/details/50516348

6. 问题 2: svn show log 看不到日志,显示的时间是 1970 年

解决方法:

1.编辑svnserve.conf,设置“anon-access=none”
2.在authz中添加 
[/]
* = 
3,清理svn的cache

参考链接 1: https://blog.csdn.net/u014756827/article/details/52506590


http 访问

7. 安装 mod_dav_svn

yum install mod_dav_svn

安装成功后,会有 mod_dav_svn.so 和 mod_authz_svn.so 两个文件

sudo find / -name mod_dav_svn.so
/usr/lib64/httpd/modules/mod_dav_svn.so

sudo find / -name mod_authz_svn.so
/usr/lib64/httpd/modules/mod_authz_svn.so

8. 配置 http 用户和权限

  • 配置用户文件
touch /var/svn/passwd
htpasswd /var/svn/passwd chenchen
  • 配置权限校验文件
cp /var/svn/solo/conf/authz /var/svn/authz

9. 配置 httpd 和 subversion 关联

vi /etc/httpd/conf.d/subversion.conf
内容如下:
<Location /svn>
    DAV svn
    SVNParentPath /var/svn

    AuthType Basic
    AuthName "Authorization SVN"
    AuthzSVNAccessFile /var/svn/authz
    AuthUserFile /var/svn/passwd
    Require valid-user
</Location>

10. 重启 httpd 服务

systemctl restart httpd.service

http://47.95.194.85/svn/solo/ 就可以访问啦、

小乌龟客户端也可以访问:

参考链接 2: https://blog.csdn.net/bbcrab/article/details/78425887

作者 @ 没有故事的老大爷
我走得很慢,但从不后退。

  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 687 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...