又修改了一下,上一個方法有問題php
#!/bin/bash ###ubuntu下注意要用bash哦,否則for循環總提示'bad loop....'html
export LC_CTYPE=en_US.UTF-8 #語言支持
SVN_PATH=/usr/bin/svn shell
TEMP_FILE= /var/svn.logubuntu
changed=$(svnlook changed -r $REV $REPOS)bash
RMF=`rm -f $TEMP_FILE `svn
echo "$changed" >> $TEMP_FILE num=`wc -l $TEMP_FILE | awk '{print $1}'` for((b=1;b<=$num;b++));do LINE_FILE=`awk "NR==$b" $TEMP_FILE | awk '{print $2}'` $SVN_PATH update /var/www/$LINE_FILE --username svn_user --password 123456 --no-auth-cache ###$LINE_FILE,要注意路徑 done
說下基本思路:oop
由於SVN每次有操做時,會有記錄列表,好比:post
U file1 //更新文件了spa
D file2 //刪除文件了日誌
....
因此,把SVN操做的文件列表寫到文件中,而後用shell取出每一行的文件,最後用svn命令更新之, 速度感受還不錯哈哈!
--------------------------下面的有些問題------------------
最近忽然發現svn提交好慢,要等好幾分鐘,網上找一個解決方法,並修改之:
修改svn 的 post-commit文件
REPOS="$1" REV="$2" export LC_CTYPE=en_US.UTF-8 #語言支持 SVN_PATH=/usr/bin/svn #指定 svn 路徑 LOG_FILE=/home/www/svn.log changed=$(svnlook changed -r $REV $REPOS) # 比較改變的文件 echo `whoami`" "`date "+%Y-%m-%d %H:%M:%S"` >> $LOG_FILE echo "$changed" >> $LOG_FILE
# 下面就是調用php處理文件
n=$'\n' /usr/local/php/bin/php-cgi -q /var/cronShell/svn_post_commit.php "$changed" &
最後,提交代碼到svn,看看日誌中有沒有對應的文件吧