今天不小心看到磁盘中有一个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了。