PHP 8.5.0 Alpha 2 available for testing

svn_diff

(PECL svn >= 0.1.0)

svn_diffComparar dos rutas de forma recursiva

Descripción

svn_diff(
    string $path1,
    int $rev1,
    string $path2,
    int $rev2
): array

Compara dos rutas, path1 y path2, de forma recursiva.

Nota:

No es una utilidad de comparación real. Solo los ficheros locales que están versionados pueden ser comparados: otros ficheros fallarán.

Parámetros

path1

Primera ruta. Puede ser una URL hacia un fichero/directorio de un repositorio SVN o una ruta hacia un fichero/directorio local.

Nota: Los caminos relativos pueden ser resueltos si el directorio de trabajo actual es uno de los que contienen el binario PHP. Para utilizar el directorio de trabajo, utilice la función realpath(), o la instrucción dirname(__FILE__).

Advertencia

Si una ruta hacia un fichero local solo tiene barras invertidas y ninguna barra, esta extensión fallará. Reemplace siempre todas las barras invertidas con barras al utilizar esta función.

rev1

Número de revisión de la primera ruta. Utilice la constante SVN_REVISON_HEAD para especificar la revisión más reciente.

path2

Segunda ruta a comparar. Ver el argumento path1 para la descripción.

rev2

Número de revisión de la segunda ruta. Ver el argumento rev1 para la descripción.

Valores devueltos

Devuelve un array que contiene 2 flujos: el primero representa la salida de la comparación, y el segundo contiene los errores. Los flujos pueden ser leídos utilizando la función fread(). Devuelve false o null si ocurre un error.

La salida del comparador puede, por omisión, estar en formato de comparación unificado Subversion, pero un » motor externo de comparación puede ser utilizado, según la configuración SVN.

Ejemplos

Ejemplo #1 Ejemplo de uso

Este ejemplo muestra un uso básico de esta función y recupera el contenido desde los flujos:

<?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);
?>

El ejemplo anterior mostrará :

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

Ejemplo #2 Comparación de dos revisiones de una ruta del repositorio

Este ejemplo implementa un gestor que permite a un usuario comparar fácilmente dos revisiones de un elemento utilizando una ruta de repositorio externa (la sintaxis por omisión es verbosa):

<?php
function svn_diff_same_item($path, $rev1, $rev2) {
return
svn_diff($path, $rev1, $path, $rev2);
}
?>

Ejemplo #3 Comparación, más portable, de dos ficheros locales

Este ejemplo implementa un gestor para comparar dos ficheros locales, de forma más portable gestionando el problema de realpath() y el error con las barras invertidas:

<?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);
}
?>

Notas

Advertencia

Esta función es EXPERIMENTAL. El comportamiento de esta función, su nombre, y toda la documentación alrededor de esta función puede cambiar sin previo aviso en una próxima versión de PHP. Esta función debe ser utilizada bajo su propio riesgo.

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top