在網頁上顯示svn log
使用php的svn_log()函數
php官方文件的svn_log():
array svn_log ( string
$repos_url
[, int $start_revision
[, int $end_revision
[, int $limit
= 0 [, int $flags
= SVN_DISCOVER_CHANGED_PATHS | SVN_STOP_ON_COPY ]]]] )$start_revision 、$end_revision和$limit 設0 代表無限制
$flags:
SVN_DISCOVER_CHANGED_PATHS - 顯示所有值(預設)
SVN_OMIT_MESSAGES - 不顯示msg和paths
SVN_STOP_ON_COPY - 不顯示paths
例:
svn_auth_set_parameter(SVN_AUTH_PARAM_DEFAULT_USERNAME, 'username'); svn_auth_set_parameter(SVN_AUTH_PARAM_DEFAULT_PASSWORD, 'password'); $log = svn_log('http://svn.xxx/repos/trunk', 1, 2, 1);OUTPUT:
$log:Array
(
[0] => Array
(
[rev] => 1
[author] => root
[msg] => init
[date] => 2014-10-29T04:13:15.632694Z
[paths] => Array
(
[0] => Array
(
[action] => A
[path] => /branches
)
)
)
)
因為某些commit提交檔案太多,即使調整$flags,svn_log()速度依然很慢
只好使用原生的svn log來在網頁上顯示紀錄
PHP:
exec("export LANG=zh_TW.UTF8; svn log file:///path/to/svndb/repos/ ", $svn_log);
注意:
export LANG=zh_TW.UTF8; 很重要,否則出來會是亂碼,我用system("export")看不到LANG的設定,而且export LANG=zh_TW.UTF8;和 svn log 必須寫在同一個exec()中
然後細節在處理$svn_log陣列即可顯示到網頁上
參考資料:
http://php.net/manual/en/function.svn-log.php
沒有留言:
張貼留言