Files
php-doc-ru/reference/svn/functions/svn-diff.xml
2024-10-14 22:18:32 +03:00

264 lines
8.2 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 715a125af5a86f0e6d6d5aa6cfa9c45257a433ac Maintainer: aur Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.svn-diff" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>svn_diff</refname>
<refpurpose>Рекурсивно сравнивает два файла</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>array</type><methodname>svn_diff</methodname>
<methodparam><type>string</type><parameter>path1</parameter></methodparam>
<methodparam><type>int</type><parameter>rev1</parameter></methodparam>
<methodparam><type>string</type><parameter>path2</parameter></methodparam>
<methodparam><type>int</type><parameter>rev2</parameter></methodparam>
</methodsynopsis>
<para>
Функция рекурсивно сравнивает два файла по путям <parameter>path1</parameter>
и <parameter>path2</parameter>.
</para>
<note>
<para>
Функция — не универсальная утилита сравнения файлов.
Функция сравнивает только локальные файлы с версиями:
сравнение других файлов вызовет ошибку.
</para>
</note>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>path1</parameter></term>
<listitem>
<para>
Первый путь к файлу, который требуется сравнить.
Параметр принимает URL-адрес файла или директории в SVN-репозитории
или путь к локальным файлу или директории.
</para>
&svn.relativepath;
<warning>
<simpara>
Модуль не найдёт путь, если путь к локальному файлу содержит
только обратные слеши (\) и не содержит прямые слеши (/).
При работе с функцией обратные слеши (\) заменяют прямыми слешми (/).
</simpara>
</warning>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>rev1</parameter></term>
<listitem>
<para>
Номер ревизии первого файла. Последнюю ревизию задают
константой <constant>SVN_REVISION_HEAD</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>path2</parameter></term>
<listitem>
<para>
Второй путь к файлу по аналогии с параметром <parameter>path1</parameter>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>rev2</parameter></term>
<listitem>
<para>
Номер ревизии второго файла по аналогии с параметром <parameter>rev1</parameter>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Функция возвращает массив со списком из двух потоков:
первый — вывод различий файлов; второй — вывод потока ошибок.
Потоки считывают функцией <function>fread</function>.
Функция возвращает &false; или &null;, если возникла ошибка.
</para>
<para>
По умолчанию функция выводит различия в унифицированном пользовательском формате Subversion,
но в зависимости от конфигурации иногда сравнивает файлы
<link xlink:href="&url.svn.manual.externaldifftools;">внешним движком сравнения</link>.
</para>
</refsect1>
<!-- Use when ERRORS exist
<refsect1 role="errors">
&reftitle.errors;
<para>
When does this function throw E_* level errors, or exceptions?
</para>
</refsect1>
-->
<!-- Use when a CHANGELOG exists
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>Enter the PHP version of change here</entry>
<entry>Description of change</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
-->
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример базового сравнения файлов</title>
<para>
Пример показывает базовое сравнение файлов функцией и извлечение содержимого из потока.
</para>
<programlisting role="php">
<![CDATA[
<?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);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
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
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Пример вывода различий между двумя ревизиями одного файла</title>
<para>
Пример реализует функцию-обёртку,
которая помогает пользователю легко сравнивать
две ревизии одного и того же элемента по внешнему пути
к репозиторию; синтаксис по умолчанию избыточен:
</para>
<programlisting role="php">
<![CDATA[
<?php
function svn_diff_same_item($path, $rev1, $rev2)
{
return svn_diff($path, $rev1, $path, $rev2);
}
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Пример более удобного способа вывода различий между двумя файла</title>
<para>
Пример реализует функцию-обёртку, которая переносимо сравнивает
два локальных файла, и компенсирует исправление
функции <function>realpath</function> и ошибку с обратными слешами.
</para>
<programlisting role="php">
<![CDATA[
<?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);
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
&warn.experimental.func;
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><link xlink:href="&url.svn.manual.diff;">SVN-документация к команде svn diff</link></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->