一、安装
1、centos 下安装命令
yum install subversion
2、查看版本,是否安装成功
svnserve --version
二、配置
1.创建SVN目录
mkdir /home/svn/;
cd /home/svn/;
2.创建项目repos
svnadmin create /home/svn/repos;
cd /home/svn/repos/conf;
3.conf目录下文件(svnserve.conf、passwd、authz)
svnserve.conf: 服务器配置文件
vim svnserve.conf
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限
auth-access=write
#密码数据库的路径文件
password-db=passwd
#访问控制文件
authz-db=authz
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm=/home/svn/repos
passwd:用户配置文件
vim passwd;
[users]
# harry = harryssecret
# sally = sallyssecret
test1 = 123456
test2 = 123456
authz:权限配置文件
vim authz;
[groups]
admin = test1, test2 # 项目组包括两个用户test1,test2
[/]
@admin = rw #读写操作
配置防火墙端口(如果需要):
不一定每个人都需要设置,可以先测试后再看是否需要打开端口
vi /etc/sysconfig/iptables;
添加一下内容:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT;
保存后重启防火墙
service iptables restart;
或者也可以这样配置防火墙
firewall-cmd --permanent --add-port=3690/tcp
firewall-cmd --reload
查看svn
a. 启动SVN
svnserve -d -r /home/svn;
b.查看SVN进程
ps -ef|grep svn|grep -v grep;
root 12568 1 0 14:40 ? 00:00:00 svnserve -d -r /home/svn
c. 检测SVN端口
netstat -ln |grep 3690;
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN
d.停止重启SVN
killall svnserve; //停止
svnserve -d -r /home/svn; //启动
6.客户端连接
windows下安装 Tortoisesvn 连接 svn://ip/repos
注意事项:个人在安装过程中出现的问题
URL ‘svn://ip/repos’ doesn’t exist
原因
如果服务器以:svnserve -d -r /home/svn/repos; // 启动
客户端 Tortoisesvn 连接 :svn://ip
如果服务器以:svnserve -d -r /home/svn; //启动
客户端 Tortoisesvn 连接 :svn://ip/repos
三、钩子设置
本文记录通过svn的钩子脚本实现本地提交svn后,自动同步代码文件到服务器的网站目录下,而不必手动同步。
假如现在有:
SVN版本库中的一个项目:/home/svn/repos
网站目录:/home/www/
我们先将SVN版本库中的一个项目checkout到网站目录:
svn co file:///home/svn/repos/ /home/www/
这时,网站目录已成为SVN的工作副本,接下来利用SVN的钩子让这个工作副本自动更新。
新建一个post-commit钩子:
vim /home/svn/repos/hooks/post-commit
添加以下代码:
#!/bin/sh
REPOS="$1"
REV="$2"
export LANG="zh_CN.UTF-8" #防止乱码
svn update /home/www/ --username test1 --password 123456 --no-auth-cache #设置登陆账号密码并不缓存
注:不要遗漏第一行的#!/bin/sh,否则post-commit会报代号255的错误。
保存后,修改文件权限为755,否则SVN无法调用执行:
chmod 755 /home/svn/repos/hooks/post-commit
OR:
chmod +x /home/svn/repos/hooks/post-commit
OK,至此,就完成了svn文件提交后自动同步更新到网站目录的代码了。