当前位置: > Linux服务器 > SVN >

svn 提交 commit慢

时间:2016-06-15 12:44来源:linux.it.net.cn 作者:IT

又修改了一下,上一个方法有问题

 

 #!/bin/bash    ###ubuntu下注意要用bash哦,不然for循环总提示'bad loop....'

export LC_CTYPE=en_US.UTF-8 #语言支持

  SVN_PATH=/usr/bin/svn 

  TEMP_FILE= /var/svn.log

  changed=$(svnlook changed -r $REV $REPOS)

   RMF=`rm -f $TEMP_FILE `

 
1
2
3
4
5
6
7
8
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

   

说下基本思路:

 因为SVN每次有操作时,会有记录列表,比如:

     U    file1   //更新文件了

     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,看看日志中有没有对应的文件吧




(责任编辑:IT)
------分隔线----------------------------