Subversion ubuntu 搭建 svn

gua · 发布于 2018年10月16日 · 34 次阅读
55255

转自我的blog 二次编辑 :http://blog.leanote.com/post/gua_l/svn-ubuntu-install

版本库搭建

各系统的安装命令略有差异,详见官网链接,以下以ubuntu上的安装进行搭建。

工具安装

$ apt-get install subversion

$ apt-get install libapache2-svn

版本库创建

mkdir /var/svn/Auto_script

svnadmin create /var/svn/Auto_script

目录结构

一个 SVN 版本库初始化之后,会有在目录下生成一些配置目录。

conf/:

authz hooks-env.tmpl passwd svnserve.conf

db/:

current fsfs.conf locks rep-cache.db revs txn-current txn-protorevs write-lock format fs-type min-unpacked-rev revprops transactions txn-current-lock uuid

hooks/:

post-commit.tmpl post-revprop-change.tmpl pre-commit pre-lock.tmpl pre-unlock.tmpl post-lock.tmpl post-unlock.tmpl pre-commit.tmpl pre-revprop-change.tmpl start-commit.tmpl

locks/:

db.lock db-logs.lock


一般创建新库之后需要修改下面三个文件:

conf/password 明文创建用户及密码

conf/authz 配置策略 ,包括分组,目录赋权限

conf/svnserve.conf 配置认证策略,及配置文件

[general]

anon-access = none //匿名用户访问权限 有none/read/write(无、只读、读写)

auth-access = write //认证用户访问权限

password-db =../conf/passwd //如果不同的用同一批用户,可以在另创建一个password文件,然后指向同一个文件去读取用户认证信息

authz-db =../conf/authz //指定使用哪个文件的根限控制策略


启动SVN服务

svnserve -d -r /var/svn 启动后默认绑定3690端口

root@tclserver:/var/svn/svn_dir/Auto_script/conf# netstat -apn | grep svn

tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 2599/svnserve


访问版本库

window 客户端 使用 url : svn://x.x.x.x/Auto_script

linux 客户端 使用 svn checkout svn://x.x.x.x/Auto_script


踩过的坑

1.启动失败

启动svnserve时出现cannot bind server socket:address already in use

停止已启动的服务

Ps –ef |grep svn

Kill -9 进程号

或重新指定端口

netstat –ntlp | grep svn

svnserve -d --listen-port 3691 -r /opt/svndata/repos

Ps –ef |grep svn

2.认证失败 authentication failed

三个配置文件行前不要留下空格

启动的路径为 svnserve -d -r /var/svn 。

一开始直接启动到/var/svn/Auto_script就一直认证失败,查找说是authz文件里的权限设置问题,书写没有错,那就是相对路径[Auto_script:/]有误,于是尝试将[Auto_script:/]改为[Auto_script:],仍认证失败,在[]基础上重新以启动上一层目录,便能成功访问。

似乎是单仓库和多仓库对启动目录和权限[]的写法有不同规定。

3.Hooks pre-commit 失败

报svn: E165001: Commit blocked by pre-commit hook (exit code 255) with no output

任何提交都无成功,报错,除非把pre-commit文件拿走。想到可能是格式问题,pre-coommit是从wins写好拷进去的,执行了dos2uinx仍不行,于是老实linux目录下的模板pre-commit.temp重命名并重新编辑。就可以顺利提交。

4.Hooks pre-commit 无效

但是提交后发现钩子脚本无效,即使空日志也能成功提交。

LOGMSG='$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c' if [ "$LOGMSG" -lt 5 ];

调试后发现两个错误

LOGMSG=$($SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc –c) If [ "$LOGMSG" -lt 5 ];

单引号改成括号并加$

If 后的方括号用空格与内容隔开。

重新提交,脚本生效

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册