使用cron自动提交svn代码

今天不小心看到磁盘中有一个svn.log的文件,打开一看,里面全是每天晚上自动提交到svn的日志,猛然想起很早之前写了一个自动提交svn的计划任务,自己已经很早就过起了不提交svn的习惯,没想到这个计划任务整整为我默默的服务了两年,从来没有间断,直到上个月我把cygwin的用户名手动改掉为止。
自动提交的代码很简单,需要修改的就是前面的一些定义,路径要用绝对路径。

#!/bin/bash
export LANG=C
PROJECT="f:/work/project.txt"
SVN="d:/proj/svn/bin/svn.exe"
username="your_svn_username"
password="your_password"
logfile="f:/work/svn.log"
if [ -z "${1}" ]
then
    project=${PROJECT}
else
    if [[ -d ${1} ]]
    then
        cd ${1}
        echo -e "----------$(date +%Y\ %m\ %d\ %R)------------" >> ${logfile}
        ${SVN} cleanup
        ${SVN} ci -m "commit auto by autocommit.sh at $(date +%Y\ %m\ %d\ %R )" --username ${username} --password ${password} >> ${logfile} 2>&1
        echo -e "-----------------end log---------------------" >> ${logfile}
        exit 0
    else
        project=${1}
    fi
fi
node=`cat $project`
for a in ${node}
do
    if [[ -d ${a} ]]
    then
        cd ${a}
        echo -e "----------$(date +%Y\ %m\ %d\ %R)------------" >> ${logfile}
        ${SVN} cleanup
        ${SVN} ci -m "commit auto by autocommit.sh at $(date +%Y\ %m\ %d\ %R )" --username ${username} --password ${password} >> ${logfile} 2>&1
        echo -e "-----------------end log---------------------" >> ${logfile}
    else
        echo -e "${a} not exist!"
    fi
done

crontab中添加也很简单,类似这样子:

0 19 * * * f:/work/autocommit.sh

上面的那一行表示每天晚上7点钟开始调用脚本,提交代码,因为我6点钟下班,所以,7点基本上不会再修改代码了。
里面关于PROJECT的文件也很简单,就是一个项目的列表文件,类似这样:

    f:/work/temp/e/test
    f:/work/temp/e/test2
    

改天有时间的话,把它修改成git的,现在停用svn了。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据