任兵的博客

linux安装svn

发布时间:4年前热度: 88768 ℃评论数:

linux配置svn 一开始我的所有项目都是ftp传的 ,但是如果项目 多人开发的时候 那就必须配置svn了 不然的话上传就会出冲突
说实话 这个svn我配置了很久 因为钩子的问题 一直没有配好 一直都是 钩子 出问题

首先第一步

检查svn

rpm -qa subversion

#卸载旧版本SVN

yum remove subversion


安装svn
yum -y install subversion

二.创建目录并配置
建立版本库目录
mkdir -p /data/svn/repo

配置
svnadmin create /data/svn/repo

执行上面的命令后,自动建立repo测试库,查看/data/svn/repo 文件夹发现包含了conf, db,format,hooks, locks, README.txt等文件,说明一个SVN库已经建立。

三.用户密码passwd配置

[root@localhost password]# cd /data/svn/repo/conf
[root@admin conf]# vim passwd
修改passwd为以下内容:

[users]
# harry = harryssecret
# sally = sallyssecret
renbing=renbing

用户名=密码

这样我们就建立了renbing用户, renbing密码

以上语句都必须顶格写, 左侧不能留空格, 否则会出错.

四.权限控制authz配置

[root@admin conf]# vi authz
目的是设置哪些用户可以访问哪些目录,向authz文件追加以下内容:

#设置[/]代表根目录下所有的资源 或者写成[repl:/]
[/]
renbing = rw

意思是renbing用户对repo测试库下所有的目录有读写权限,当然也可以限定。
如果是自己用,就直接是读写吧。

以上语句都必须顶格写, 左侧不能留空格, 否则会出错.

五.服务svnserve.conf配置

[root@admin conf]# vim svnserve.conf

追加以下内容:

[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限
auth-access=write
#密码数据库的路径
password-db=passwd
#访问控制文件
authz-db=authz
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm=/data/svn/repositories

以上语句都必须顶格写, 左侧不能留空格, 否则会出错.

六.启动svn服务
查看svn的服务是否启动
ps -ef|grep svn
如果没有启动执行 下面命令即可:
svnserve -d -r /data/svn/repo –listen-port=3690

关闭killall svnserve 

重启svnserve -d -r /data/svn/repos


七.开启端口

/sbin/iptables -I INPUT -p tcp –dport 3690 -j ACCEPT

八.访问
客户端访问
svn://ip地址
端口默认为3690,输入配置好的用户名和密码即可。
注意:此处千万不能 svn://ip地址/repo,否则无法访问。

服务器端检出
svn checkout svn://localhost

九 配置钩子实现自动同步

假设web目录是 /www/web/hua/public_html

在/data/svn/repo/hooks下创建post-commit文件,文件设置可执行权限

cp post-commit.tmpl post-commit
chmod 755 post-commit
打开post-commit文件,加入以下内容

export LANG=zh_CN.UTF-8
svn co svn://你的ip地址 /www/web/hua/public_html
LOG_PATH=/tmp/svn_test.log
WEB=/www/web/hua/public_html
REPOS=”$1″
REV=”$2″

svn update –username xxxxx –password xxxxx $WEB –no-auth-cache >> $LOG_PATH





可能出现在的问题

关于“svn: Can't connect to host '*.*.*.*': 由于连接方在一段时间后没有正确答复或连接”的解决方法

阿里云服务器环境(PHP+Nginx+MySQL)

【原因1】svnserve.conf 没写好,当然你先备份一份先:

  cp svnserve.conf svnserve.conf.bak

 打开此文件

vi svnserve.conf 
清空里面的所有代码,复制黏贴以下代码:

[general]
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
注:每行代码前面一定不要有空格,每行全部顶置。

【原因2】TortoiseSVN 缓存问题

右键点击本地副本,TortoiseSVN -> Settings -> Saved Data,点击个个“Clear”按钮,把本地缓存都清除了,点击“确定”,再重新 “checkout”。

【原因3】防火墙 3690 端口没有对外开放,因此我们要修改配置文件:

vi /etc/sysconfig/iptables
在中间的位置复制如下代码(如果有就跳过):

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3690 -j ACCEPT
重启一下防火墙

service iptables restart 

linux安装svn

手机扫码访问