使用小烏龜或者svn命令提交時,文件實際已經提交完畢,但需要等待很長的時間才提示提交完畢(幾秒到十幾秒不等,正常情況只要文件上傳完了就提示提交完畢)。
我的項目大概100多M,android項目、ios項目、UI文檔合計1G左右,當時就懷疑是鉤子的原因,導致commit速度下降。
思路:每次提交時把需要修改的文件寫入日志文件中,然后通過php讀取日志文件 每次只用更新提交的文件,而不用更新整個項目
直接上代碼
post-commit
#!/bin/shexport LANG=en_US.UTF-8REPOS="$1"REV="$2"SVN=/usr/bin/svnWEB=/Data/wwwrootLOG_FILE=/Data/logs/svn.logchanged=$(svnlook changed -r $REV $REPOS) # 比較改變的文件echo "$changed" >> $LOG_FILEphp svn_post_commit.php #執行php腳本php代碼
<?php//讀取日志文件$f = file_get_contents('/Data/logs/svn.log');$files = explode("/n", $f);if (!is_array($files)) { $files=(array)$files;};foreach ($files as $v) { // 取文件名 $f_tem = trim(substr($v, 2)); //由于只需要更新php代碼,這里只拿到服務端代碼 更新到www目錄 $d_tem = substr($f_tem, 0, strpos($f_tem, '/')); if (!in_array($d_tem, array('www'))) { continue; } // SVN copy 對應的文件 $f_name = '/Data/wwwroot/' . str_replace('www/','',$f_tem); $cmd = "svn update '$f_name'"; //執行svn命令 exec($cmd,$out); //設置文件權限 exec("chown www:www $f_name");}//刪除日志文件unlink("/Data/logs/svn.log");exit();新聞熱點
疑難解答