PHP Conference Japan 2024

svn_log

(PECL svn >= 0.1.0)

svn_log返回儲存庫 URL 的提交日誌訊息

說明

svn_log(
    字串 $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_MESSAGESSVN_DISCOVER_CHANGED_PATHSSVN_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 版本中更改,恕不另行通知。使用此函式需自行承擔風險。

新增註解

使用者貢獻的註解 1 則註解

0
php dot net at gnur dot nl
13 年前
請注意,使用 svn_log 而不提供版本號碼比提供版本號碼要慢得多。範例

$ time php -r "svn_log('https://127.0.0.1/svn/shopadsl');"

實際 0 分 2.140 秒
使用者 0 分 0.140 秒
系統 0 分 0.000 秒

對比

$ time php -r "svn_log('https://127.0.0.1/svn/shopadsl', 0, 45);"

實際 0 分 0.063 秒
使用者 0 分 0.024 秒
系統 0 分 0.016 秒
To Top