請注意,使用 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要擷取的紀錄數量。
flagsSVN_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 秒