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

centos7 svn hook 自动同步代码到 web 目录

2018-01-03 01:14 357 查看

非脚本,只是命令合集

#!/usr/bin/env bash
## svn 同步 脚本

## yum 安装 svn
yum install -y subversion >> ~/svn_install_log.log

## 检测安装版本
svnserve --version|grep "版本"

echo "创建 svn 仓库目录: /var/svn"
mkdir -p /var/svn
cd /var/svn
pwd

echo 创建版本库
svnadmin create /var/svn/project
cd project
pwd
echo "会看到自动生成的版本库文件"
ls -al ./

echo  "vim  /var/svn/project/conf/authz"

cat >/var/svn/project/conf/authz<<EOF
[groups]
alliance = store,wholesaler, logistics,platform
[project:/]
@alliance = rw
EOF

echo "vim /var/svn/project/conf/passwd"

cat >/var/svn/project/conf/passwd<<EOF
[users]
store = store
wholesaler = wholesaler
logistics = logistics
platform = platform
EOF

echo "vim /var/svn/project/conf/svnserve.conf"

# anon-access = none  //匿名用户访问权限:无
sed -i 's/# anon-access = read/anon-access = none/g' /var/svn/project/conf/svnserve.conf

# auth-access = write     //普通用户访问权限:读、写
sed -i 's/# auth-access = write/auth-access = write/g' /var/svn/project/conf/svnserve.conf

# password-db = passwd        //密码文件
sed -i 's/# password-db = passwd/password-db = passwd/g'  /var/svn/project/conf/svnserve.conf

# authz-db = authz        //权限配置文件
sed -i 's/# authz-db = authz/authz-db = authz/g'  /var/svn/project/conf/svnserve.conf

# realm = /var/svn/project    //版本库所在1
sed -i 's/# realm = My First Repository/realm = \/var\/svn\/project/g'  /var/svn/project/conf/svnserve.conf

#### 注意:所有以上的配置项都需要顶格,即前面不能预留空格,否则报错  ####

echo  "启动svn服务:"
killall svnserve
svnserve -d -r /var/svn

echo "测试服务器"

mkdir -p /home/wwwroot/svntest # 这里的目录应该随自己项目做出修改

cd /home/wwwroot/svntest
# 如果手动检出可以这样
# svn co svn://localhost/project --username store
# 手动输入密码,或在脚本中这样写:
svn co svn://localhost/project   --username store --password store <<EOF
yes
EOF

## svn 客户端存储文本密码
sed -i 's/# store-plaintext-passwords = no/store-plaintext-passwords = yes/g' /root/.subversion/servers

cd project

touch README.md
svn add README.md

svn commit README.md -m "测试提交文件"

## 下面添加 post hook
cat >/var/svn/project/hooks/post-commit<<EOF
#!/bin/sh
export LANG=en_US.utf8
SVN_PATH=/usr/bin/svn
WEB_PATH=/home/wwwroot/svntest/project
\$SVN_PATH update \$WEB_PATH --username 'store' --password 'store' --no-auth-cache
EOF

## 修改 hook 脚本用户、组 为www,这里的用户组与 web 目录要一致
chown  www:www /var/svn/project/hooks/post-commit

## 添加执行权限
chmod 755 /var/svn/project/hooks/post-commit

## 下面检验成果

mkdir -p /home/wwwroot/testhook

cd /home/wwwroot/testhook

svn co svn://localhost/project   --username wholesaler --password wholesaler <<EOF
yes
EOF

cd project
touch HOOKTEST.md
svn add HOOKTEST.md
svn commit HOOKTEST.md -m "hook test"
ls -al /home/wwwroot/svntest/project


ps:经过测试功能木有问题,已经改过一些地方,还是有些不尽人意的地方,今天太晚了,该休息了,就这样吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: