利用cront自动更新代码
原因:公司使用SVN存储代码,经常看代码之前忘记更新。遂想办法,让代码定时自动更新。
定时更新,首先想到的就是使用crontab+svn up。
但是由于代码比较多,而且处于不同目录或者自己更改了目录结构,且SVN无法进行递归,除非每个代码目录都写一个cron,但是,在crontab调用SVN命令时,无法获得授权。必须指定user和pwd。感觉放在crontab中不太合适。
于是重新写了个脚本。用来定时更新(svn_up.sh):
#!/bin/bash
#递归调用函数:更新当前目录
function up_path(){
#判断当前是否有.svn目录,若有更新当前目录
if [ -d "$1/.svn" ]; then
#crontab需要指定账号密码,-no-auth-cache即不要保存用户信息
svn up --username username --password password --no-auth-cache $1;
echo "--------------------------------"
else
#获取绝对路径,排除当前目录(以/结尾),排除包含/.的目录(不是代码,如/.svn)
#find /codepath/ -maxdepth 1 | grep -v "[\/]$" | grep -v "\/\."
dir_list=$(find $1 -maxdepth 1 | grep -v "[\/]$" | grep -v "\/\.")
for i in $dir_list; do
if [ $1 = $i ]; then
continue
elif [ -d $i ]; then
#若当前目录不是svn目录,则递归更新
up_path $i;
fi
done
fi
}
#使用参数调用
up_path $1;
crontab调用如下:
#周一到周五,10点到20点,每30分钟调用一次。代码目录作为参数 */30 10-20 * * 1-5 sh svn_up.sh /codepath/ &> /tmp/test.log