(PECL svn >= 0.1.0)
svn_diff — Рекурсивно сравнивает два файла
   Функция рекурсивно сравнивает два файла по путям path1
   и path2.
  
Замечание:
Функция — не универсальная утилита сравнения файлов. Функция сравнивает только локальные файлы с версиями: сравнение других файлов вызовет ошибку.
path1Первый путь к файлу, который требуется сравнить. Параметр принимает URL-адрес файла или директории в SVN-репозитории или путь к локальным файлу или директории.
Замечание: Функция вычислит относительные пути так, как если бы текущая рабочая директория была домашней папкой самого PHP. Чтобы использовать рабочую директорию вызывающего скрипта, пользуются функцией realpath() или dirname(__FILE__).
Модуль не найдёт путь, если путь к локальному файлу содержит только обратные слеши (\) и не содержит прямые слеши (/). При работе с функцией обратные слеши (\) заменяют прямыми слешми (/).
rev1
       Номер ревизии первого файла. Последнюю ревизию задают
       константой SVN_REVISION_HEAD.
      
path2
       Второй путь к файлу по аналогии с параметром path1.
      
rev2
       Номер ревизии второго файла по аналогии с параметром rev1.
      
   Функция возвращает массив со списком из двух потоков:
   первый — вывод различий файлов; второй — вывод потока ошибок.
   Потоки считывают функцией fread().
   Функция возвращает false или null, если возникла ошибка.
  
По умолчанию функция выводит различия в унифицированном пользовательском формате Subversion, но в зависимости от конфигурации иногда сравнивает файлы » внешним движком сравнения.
Пример #1 Пример базового сравнения файлов
Пример показывает базовое сравнение файлов функцией и извлечение содержимого из потока.
<?php
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) // Остальной вывод diff
Пример #2 Пример вывода различий между двумя ревизиями одного файла
Пример реализует функцию-обёртку, которая помогает пользователю легко сравнивать две ревизии одного и того же элемента по внешнему пути к репозиторию; синтаксис по умолчанию избыточен:
<?php
function svn_diff_same_item($path, $rev1, $rev2)
{
    return svn_diff($path, $rev1, $path, $rev2);
}
?>
Пример #3 Пример более удобного способа вывода различий между двумя файла
Пример реализует функцию-обёртку, которая переносимо сравнивает два локальных файла, и компенсирует исправление функции realpath() и ошибку с обратными слешами.
<?php
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);
}
?>Это ЭКСПЕРИМЕНТАЛЬНАЯ функция. Поведение, название и документацию к функции в новых версиях PHP изменяют без уведомления. За включение функции в код отвечает программист.
