您的位置:首页 > 运维架构 > Linux

linux安装svn+钩子

2013-10-17 14:31 316 查看
linux安装svn
wget http://subversion.tigris.org/downloads/subversion-1.6.6.tar.gz wget http://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.gz
#解压2个压缩包到同一级
tar zxvf subversion-deps-1.6.6.tar.gz
cd subversion-1.6.6

#编译 (--prefix是指的安装目次,--without是不消apche 最后是应用依附包)
./configure --prefix=/opt/svn --without-berkeley-db --with-zlib=/usr/local/subversion-1.6

#安装
make && make install

#在etc/profile 里面参加环境变量
export PATH=$PATH:/opt/svn/bin
#使景象变量生效
source /etc/profile

#搜检版本svn (是两个横)
svnserve --version

#建树版本库目录 选择一个 目录 之后 建树
mkdir -p /var/svnbox
cd /var/svnbox
#建立一个项目版本库
svnadmin create www.domain.com

#修改配置文件
cd www.domain.com/conf && ll
-rw-r--r-- 1 root root 710 08-25 09:40 authz
-rw-r--r-- 1 root root 325 08-25 09:38 passwd
-rw-r--r-- 1 root root 1449 08-25 09:36 svnserve.conf

#修改总配置文件
vim svnserve.conf
anon-access = none
auth-access = write
password-db = passwd #密码文件
authz-db = authz #账户

#给svntest仓库添加一个名称为 fly 的用户,权限为可写。
vi authz
[svntest:/]
fly = rw

#为账户设置密码
vim passwd
fly = xxxxxx

svnserve.conf
(重视:这只是在svntest下生效的用户名暗码,也可以同一写到svn/conf/authz和password里面,就相当于全局的,只要在版本库中的
引入即可)

#启动SVN,并指定SVN的根目录:
##这个目录是版本库目录
svnserve -d -r /data/svnbox
-r指定办事器的根目次
-d默示在后台运行

#查看启动状态:
netstat -tunlp | grep svn
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 8646/svnserve

--------------------------如果开启了防火墙
#开放SVN端口
svn默认端口是3690,你须要在防火墙上开放这个端口。
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 3690 -j ACCEPT
/sbin/service iptables save
你也可以经由过程svnserve的--listen-port选项来指定一个已经开放的其他端口,不过如许的话客户端应用也必须家上端口,如svn://192.168.1.200:9999/.

#开放之后 重启
netstat -tunlp | grep svn 找到过程id ,kill -9 id掉
# 用这个端口打开
svnserve -d -r /usr/local/subversion-1.6 --listen-port 843
然后从头启动就可以了
------------------------------

配置钩子
进入主目录。
# /usr/bin/svn checkout svn://ip/www.domian.com ./ //检出一份版本库文件到当前目录
第二步:在项目库的 hooks/ 目录下新建 post-commit 并赋予777权限 文件 【钩子脚本】
添加脚本内容如下:
--------------------------------------------------------------------
#!/bin/sh
export LC_CTYPE=en_US.UTF-8//能添加中文字符
SVN=/usr/local/svn/bin/svn#这里配置的是svn安装bin目录下的svn文件
WEB=/usr/local/nginx/html #要更新的目录
$SVN update $WEB --username xxx --password xxx
其中SVN=右边改成 svn 命令位置
WEB=右边改成你实际的web目录

第三步:让post-commit有执行的权限 chmod 777 post-commit

--------------------------------------------------------------------
申明:
#!/bin/sh 申明是履行shell号令
export LANG=zh_CN.GBK 是为懂得决svn post commit 中文乱码,设置本地化编码,因为我的体系为GBK编码,SVN默认是UTF-8编码,若是不设置将会呈现错误,而履行不成功,错误标识为svn: Can""t convert string native encoding to ""UTF-8""
/usr/bin/svn --username lxy --password 123456 /var/www/myproject 履行更新操纵
若是提示:post-commit hook failed (exit code 255) with no output付与post-commit文件可履行权限
若是您的默认编码就是UTF-8的,要上传中文文件,先将文件另存为UTF-8格局在提交

本文出自 “FlyHome” 博客,请务必保留此出处http://superfly81.blog.51cto.com/6302302/1310336
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: