CakeFest 2024: The Official CakePHP Conference

svn_log

(PECL svn >= 0.1.0)

svn_logВозвращает комментарии к правкам в репозитории

Описание

svn_log(
    string $repos_url,
    int $start_revision = ?,
    int $end_revision = ?,
    int $limit = 0,
    int $flags = SVN_DISCOVER_CHANGED_PATHS | SVN_STOP_ON_COPY
): array

svn_log() возвращает полную историю изменений конкретного элемента репозитория, расположенного по URL repos_url, или историю правок в конкретном диапазоне, если указан параметр start_revision. Данная функция эквивалентна команде SVN svn log --verbose -r $start_revision $repos_url.

Список параметров

repos_url

URL-адрес репозитория для получения истории правок элемента.

start_revision

Начальный номер ревизии для получения. Используйте константу SVN_REVISION_HEAD для получения самой последней ревизии.

end_revision

Конечный номер ревизии для получения. По умолчанию при использовании параметра start_revision идентичен ему, в противном случае равен SVN_REVISION_INITIAL.

limit

Количество записей для получения.

flags

Любая комбинация SVN_OMIT_MESSAGES, SVN_DISCOVER_CHANGED_PATHS и SVN_STOP_ON_COPY.

Возвращаемые значения

В случае успешного выполнения, функция возвращает массив формата:

[0] => Массив, отсортированный по сначала самой последней (самой большей) ревизии
(
    [rev] => Номер ревизии (целое число)
    [author] => Автор правки (строка)
    [msg] => Комментарий к изменениям (строка)
    [date] => Дата правки в формате ISO 8601, т.е. date('c')
    [paths] => Массив с путями к изменённым файлам
        (
            [0] => Array
                (
                    [action] => Обозначение характера изменений
                    [path] =>  Абсолютный путь репозитория к изменённому файлу
                )
            [1] => ...
        )
)
[1] => ...

Замечание:

Вывод всегда представлен как пронумерованный массив, содержащий массивы, кроме случаев отсутствия или только единственного экземпляра ревизий.

Значение action является подмножеством » первых букв состояний SVN, где возможные значения - это:

Действия
Буква Описание
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] => 'К нашему бутерброду добавлены сыр и колбаса.'
        [date] => '2007-04-06T16:00:27-04:00'
        [paths] => Array
            (
                [0] => Array
                    (
                        [action] => 'M'
                        [path] =>  '/sandwich.txt'
                    )
            )
    )
)

Примечания

Внимание

Эта функция является ЭКСПЕРИМЕНТАЛЬНОЙ. Поведение этой функции, её имя и относящаяся к ней документация могут измениться в последующих версиях PHP без уведомления. Используйте эту функцию на свой страх и риск.

add a note

User Contributed Notes 1 note

up
0
php dot net at gnur dot nl
12 years ago
Please not that using svn_log without giving revisions is much, much slower then with revisions. Examples:

$ time php -r "svn_log('http://localhost/svn/shopadsl');"

real 0m2.140s
user 0m0.140s
sys 0m0.000s

VS

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

real 0m0.063s
user 0m0.024s
sys 0m0.016s
To Top