請注意,使用 svn_log 而不提供版本號碼比提供版本號碼要慢得多。範例
$ time php -r "svn_log('https:///svn/shopadsl');"
實際 0 分 2.140 秒
使用者 0 分 0.140 秒
系統 0 分 0.000 秒
對比
$ time php -r "svn_log('https:///svn/shopadsl', 0, 45);"
實際 0 分 0.063 秒
使用者 0 分 0.024 秒
系統 0 分 0.016 秒
(PECL svn >= 0.1.0)
svn_log — 返回儲存庫 URL 的提交日誌訊息
$repos_url
,$start_revision
= ?,$end_revision
= ?,$limit
= 0,$flags
= SVN_DISCOVER_CHANGED_PATHS | SVN_STOP_ON_COPY
svn_log() 會傳回儲存庫網址 repos_url
中項目的完整歷史記錄,或是在設定 start_revision
時傳回特定版本的歷史記錄。此函式等同於 svn log --verbose -r $start_revision $repos_url
。
repos_url
要擷取紀錄歷史記錄的項目的儲存庫網址。
start_revision
要擷取的第一個紀錄的版本號碼。使用 SVN_REVISION_HEAD
從最新版本擷取紀錄。
end_revision
要擷取的最後一個紀錄的版本號碼。如果指定了 start_revision
,則預設為 start_revision
,否則預設為 SVN_REVISION_INITIAL
。
limit
要擷取的紀錄數量。
flags
SVN_OMIT_MESSAGES
、SVN_DISCOVER_CHANGED_PATHS
和 SVN_STOP_ON_COPY
的任意組合。
成功時,此函式會以以下格式傳回檔案列表陣列:
[0] => Array, ordered most recent (highest) revision first ( [rev] => integer revision number [author] => string author name [msg] => string log message [date] => string date formatted per ISO 8601, i.e. date('c') [paths] => Array, describing changed files ( [0] => Array ( [action] => string letter signifying change [path] => absolute repository path of changed file ) [1] => ... ) ) [1] => ...
注意事項:
即使沒有或只有一個紀錄訊息,輸出也始終會是數字索引的陣列陣列。
action 的值是 » 第一欄狀態輸出 的子集,其中可能的值為
字母 | 說明 |
---|---|
M | 項目/屬性已被修改 |
A | 項目已被新增 |
D | 項目已被刪除 |
R | 項目已被取代 |
如果未對項目進行任何更改,則傳回空陣列。
範例 #1 svn_log() 範例
<?php
print_r( svn_log('http://www.example.com/', 23) );
?>
以上範例將輸出類似以下內容:
Array ( [0] => Array ( [rev] => 23 [author] => 'joe' [msg] => 'Add cheese and salami to our sandwich.' [date] => '2007-04-06T16:00:27-04:00' [paths] => Array ( [0] => Array ( [action] => 'M' [path] => '/sandwich.txt' ) ) ) )
此函式為*實驗性*。此函式的行為、名稱和周圍文件可能會在未來的 PHP 版本中更改,恕不另行通知。使用此函式需自行承擔風險。
請注意,使用 svn_log 而不提供版本號碼比提供版本號碼要慢得多。範例
$ time php -r "svn_log('https:///svn/shopadsl');"
實際 0 分 2.140 秒
使用者 0 分 0.140 秒
系統 0 分 0.000 秒
對比
$ time php -r "svn_log('https:///svn/shopadsl', 0, 45);"
實際 0 分 0.063 秒
使用者 0 分 0.024 秒
系統 0 分 0.016 秒