Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
svn_diff
(PECL svn >= 0.1.0)
svn_diff — Рекурсивно показывает различия двух файлов
Описание
array svn_diff ( string $path1 , int $rev1 , string $path2 , int $rev2 )Рекурсивно показывает различия двух файлов path1 и path2.
Замечание:
Это не инструмент просмотра общих изменений. Могут быть просмотрены различия только локальных файлов, которые находятся в системе контроля версий SVN : для других файлов различия просмотреть не удастся.
Список параметров
path1 -
Первый путь. Это может быть URL файла/директории в репозитарии SVN или путь к локальному файлу/директории.
ВниманиеЗамечание: Относительные пути будут вычислены, как если бы текущая рабочая директория являлась домашней папкой самого PHP. Чтобы использовать рабочую директорию вызывающего скрипта, используйте realpath() или dirname(__FILE__).
Если путь к локальному файлу состоит только из обратных слэшей (\), без слэша (/), данному модулю не удастся найти необходимые файлы. Всегда заменяйте все обратные слэши (\) на слэши (/) используя эту функцию.
rev1 -
Номер ревизии первого файла. Используйте константу SVN_REVISION_HEAD для задания самой последней ревизии.
path2 -
Второй путь к файлу, аналогично path1
rev2 -
Номер ревизии второго файла, аналогично rev1.
Возвращаемые значения
Возвращает список массивов состоящий из двух потоков: первая - различия файлов; вторая - ошибки. Потоки могут быть прочитаны функцией fread(). При ошибке возвращает FALSE или NULL.
По умолчанию, вывод различий будет в стандартном формате Subversion, но также может использоваться » внешним инструментом показа различий, в зависимости от настройки Subversion.
Примечания
ВниманиеЭта функция является ЭКСПЕРИМЕНТАЛЬНОЙ. Поведение этой функции, ее имя и относящаяся к ней документация могут измениться в последующих версиях PHP без уведомления. Используйте эту функцию на свой страх и риск.
Примеры
Пример #1 Простой пример
Пример ниже иллюстрирует простое использование данной функции и получение данных из потока.
list($diff, $errors) = svn_diff(
'http://www.example.com/svnroot/trunk/foo', SVN_REVISION_HEAD,
'http://www.example.com/svnroot/branches/dev/foo', SVN_REVISION_HEAD
);
if (!$diff) exit;
$contents = '';
while (!feof($diff)) {
$contents .= fread($diff, 8192);
}
fclose($diff);
fclose($errors);
var_dump($contents);
Результат выполнения данного примера:
Index: http://www.example.com/svnroot/trunk/foo =================================================================== --- http://www.example.com/svnroot/trunk/foo (.../foo) (revision 23) +++ http://www.example.com/svnroot/branches/dev/foo (.../foo) (revision 27) // further diff output
Пример #2 Вывод различий между двумя ревизиями одного файла
Этот пример показывает как реализовать функцию-обертку, которая позволяет пользователю просматривать различия между двумя ревизиями одного файла, используя внешний путь репозитария (стандартный синтаксис такой реализации несколько избыточен):
function svn_diff_same_item($path, $rev1, $rev2) {
return svn_diff($path, $rev1, $path, $rev2);
}
Пример #3 Более удобный способ вывода различий между двумя файла
Этот пример показывает как реализовать функцию-обертку для вывода различий между двумя локальными файлами, которая является переносимой и лишена ошибок при работе с функцией realpath() и обратным слэшом.
function svn_diff_local($path1, $rev1, $path2, $rev2) {
$path1 = str_replace('\\', '/', realpath($path1));
$path2 = str_replace('\\', '/', realpath($path2));
return svn_diff($path1, $rev1, $path2, $rev2);
}
Смотрите также
Описание на ru2.php.net
Описание на php.ru