LonghornPHP 2026

svn_status

(PECL svn >= 0.1.0)

svn_statusВозвращает SVN-статус файлов и директорий рабочей копии

Описание

function svn_status(string $path, int $flags = 0): array

Возвращает SVN статус файлов и директорий рабочей копии, подвергнувшихся модификации, добавлению, удалению и прочим изменениям.

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

path

Локальный путь к файлу или директории для получения статуса.

Замечание:

Функция вычислит относительные пути так, как если бы текущая рабочая директория была домашней папкой самого PHP. Чтобы использовать рабочую директорию вызывающего скрипта, пользуются функцией realpath() или dirname(__FILE__).

flags

Любая комбинация флагов Svn::NON_RECURSIVE, Svn::ALL (вне зависимости от статуса модификации), Svn::SHOW_UPDATES (к записям будут добавлены пункты со старыми правками), Svn::NO_IGNORE (игнорирование svn:ignore свойств при сканировании новых файлов) и Svn::IGNORE_EXTERNALS.

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

Возвращает пронумерованный массив, состоящий из ассоциативных массивов с подробными статусами элементов в репозитории:

Array (
    [0] => Array (
        // информация об элементе
    )
    [1] => ...
)

Информация об элементе может быть получена из ассоциативного массива по двум ключам:

path

Путь к файлу/директории в локальной файловой системе.

text_status

Код текстового статуса элемента. Смотрите Для информации о возможных значениях, обратитесь к константам статусов.

repos_text_status

Код текстового статуса элемента в репозитории. Отображается если update установлен в true. Смотрите Для информации о возможных значениях, обратитесь к константам статусов.

prop_status

Код текстового статуса свойств элемента. Смотрите Для информации о возможных значениях, обратитесь к константам статусов.

repos_prop_status

Код текстового статуса свойств элемента в репозитории. Отображается если update установлен в true. Смотрите Для информации о возможных значениях, обратитесь к константам статусов.

locked

Будет ли заблокирован элемент или нет. (Устанавливается при true.)

copied

Будет ли скопирован элемент (запланирован для добавления в истории правок). (Устанавливается при true.)

switched

Будет ли элемент переключён используя команду переключения. (Устанавливается при true)

Следующие ниже ключи устанавливаются только если элемент имеет версию:

name

Имя элемента в репозитории.

url

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

repos

URL-адрес репозитория.

revision

Номер ревизии рабочей копии.

kind

Тип элемента, т.е. файл или директория. Смотрите Для информации о возможных значениях, обратитесь к константам типов.

schedule

Запланированное действия для элемента, т.е. добавление или удаления. Константы для данных магических чисел не доступны, они эмулируются, согласно правилу:

<?php
if (!defined('svn_wc_schedule_normal')) {
    define('svn_wc_schedule_normal',  0); // никаких изменений
    define('svn_wc_schedule_add',     1); // элемент будет добавлен
    define('svn_wc_schedule_delete',  2); // элемент будет удалён
    define('svn_wc_schedule_replace', 3); // элемент будет удалён и добавлен
}
?>
deleted

Будет или нет элемент будет удалён, но ревизия родителя не увеличится (Установлено при true.)

absent

Будет или нет элемент помечен отсутствующим. Subversion будет помнить, что в этом месте что-то расположено, но не будет знать что именно. (Устанавливается при true.)

incomplete

Будет или нет содержимое директории считаться неполным. (Устанавливается при true.)

cmt_date

Отметка времени в формате Unix о дате последней правки (Не зависит от update.)

cmt_rev

Номер ревизии последнего обновления. (Не зависит от update.)

cmt_author

Имя автора последней правки. (Не зависит от update.)

prop_time

Отметка времени в формате Unix о последней актуальной версии свойств.

text_time

Отметка времени в формате Unix о последней актуальной версии текста.

Примеры

Пример #1 Простой пример

Приведённый ниже пример иллюстрирует базовое, теоретическое использование данной функции

<?php
print_r(svn_status(realpath('wc')));
?>

Вывод приведённого примера будет похож на:

Array (
    [0] => Array (
        [path] => /home/bob/wc/sandwich.txt
        [text_status] => 8 // элемент был изменён
        [repos_text_status] => 1 // нет доступной информации, выполнить update
        [prop_status] => 3 // нет изменений
        [repos_prop_status] => 1 // нет доступной информации, выполнить update
        [name] => sandwich.txt
        [url] => http://www.example.com/svnroot/deli/trunk/sandwich.txt
        [repos] => http://www.example.com/svnroot/
        [revision] => 123
        [kind] => 1 // file
        [schedule] => 0 // не запланировано никаких действий
        [cmt_date] => 1165543135
        [cmt_rev] => 120
        [cmt_author] => Alice
        [prop_time] => 1180201728
        [text_time] => 1180201729
    )
)

Примечания

Внимание

Это ЭКСПЕРИМЕНТАЛЬНАЯ функция. Поведение, название и документацию к функции в новых версиях PHP изменяют без уведомления. За включение функции в код отвечает программист.

Смотрите также

Добавить

Примечания пользователей 1 note

up
-2
matthijs at fragfrog dot nl
15 years ago
There seems to be an undocumented function svn_info (arguably the proper name for this functionality) that does almost the same as svn_status, but ignores the second parameter.

Unfortunately, neither can directly be used to just retrieve the current revision of a working copy, but a combination of svn_status and SVN_NON_RECURSIVE|SVN_ALL will work; simply perform the following command:

<?php
svn_status(ROOT,  SVN_NON_RECURSIVE|SVN_ALL);
?>

Where ROOT is of course the root of the working directory you wish to examine. One of the entries will be that working directory, including its current status.
To Top