Linux svn安装配置与钩子设置

一、安装
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文件提交后自动同步更新到网站目录的代码了。

你可能感兴趣的:(php)