这里不过多介绍svn的安装、配置、使用。介绍一下Subversion的原理和工作机制。
一、实现原理:Subversion是一种集中的分享信息的系统,它的核心是版本库,它存储所有的数据,版本库按照文件树形式存储所有数据,包括所有的文件和目录。任意数量的客户端可以连接到版本库,读写这些文件,通过写数据,别人可以看到这些信息。通过读数据,别人可以看到版本的修改。
二、工作机制
1、每个工作拷贝都会保留一份基准版本。
2、只要在该基准版本有过修改,所属的本层文件以及所有的父级文件夹都会呈现出来修改标志。
3、update成功时,基准版本会变成服务器的head版本。
4、如果提交成功,服务器的head版本变为用户提交基准版本。
5、revert操作都是将工作区恢复到基准版本。
6、merge操作即是对两个不用的版本数进行比较,然后将不同应用拷贝到另一个版本数中
三、svn的pre-commit钩子
#!/bin/sh
#自动同步钩子
REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
SVN=/usr/bin/svn
WEBDIR=/var/www/webroot
$SVN update $WEBDIR --username dev-user --password dev123 -- no-auth-cache 2>1 /root/svn_post_commit.log
四、svn的post-commit文件做提交时语法检查和svn log检验
#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
LOGMSG=`/usr/bin/svnlook log -t "$TXN" "$REPOS"|grep "[a-zA-Z0-9]"|wc -c`
if [ "$LOGMSG" -lt 20]; then
echo $LOGMSG 1>&2
echo -e "\nmust input log message and length larger than 20" 1>&2
exit 1
fi
PHP="/usr/bin/php"
FILES=$($SVNLOOK changed -t "$TXN" "$REPOS" | awk '/^[AU]/ {print $NF}')
HASERROR=0
for FILE in $FILES; do
CONTENT=$($SVNLOOK cat -t "$TXN" "$REPOS" "$FILE")
if echo "$CONTENT" | grep -q $'var_dump'; then
echo "######Debug Code found :$FILE#########" 1>&2
echo "Please remove var_dump from $FILE" 1>&2
HASERROR=1
fi
if [[ "$FILE" =~ \.(php)$ ]]; then
MESSAGE=$(echo "$CONTENT" | $PHP -l 2>&1)
if [ $? -ne 0 ]; then
echo "######Error found :$FILE#########" 1>&2
echo "$MESSAGE" 1>&2
HASERROR=1
fi
fi
done
if [$HASERROR -eq 1]; then
exit 1
fi
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。