svn_diff

(PECL svn >= 0.1.0)

svn_diffCompara dos rutas de acceso recursivamente

Descripción

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

Compara dos rutas de acceso recursivamente, path1 y path2.

Nota:

No es una utilidad general de comparación. Únicamente se pueden comparar ficheros locales que estan versionados: los otros ficheros fallarán.

Parámetros

path1

La primera ruta de acceso a comparar. Puede ser una URL a un fichero/directorio en un repositorio SVN o una ruta de acceso a un fichero/directorio local.

Nota: Las rutas relativas se resolverán como si el directorio de trabajo actual es el que contiene el binario de PHP. Para utilizar el directorio de trabajo que contiene el script a llamar, use realpath() o dirname(__FILE__).

Advertencia

Si la ruta de acceso a un fichero local únicamente tiene el caracter de barra invertida '\' y no la barra '/', esta extensión no podrá encontrar la ruta de acceso. Se debe reemplazar siempre la barra invertida '\' con la barra '/' cuando se utilice esta función.

rev1

Número de revisión de la primera ruta de acceso. Utilizar SVN_REVISION_HEAD para especificar la versión más reciente.

path2

Segunda ruta de acceso a comparar. Ver path1para descripción.

rev2

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

Valores devueltos

Devuelve un array consistente en dos flujos: el primero es la salida de la comparación y el segundo contiene el flujo de salida de error. El flujo se puede leer utilizando fread(). Devuelve FALSE o NULL en caso de error.

Por defecto, la salida de la comparación tendrá el formato Subversión de cliente unificado, pero un »  motor externo de comparativa puede ser utilizado dependiendo de la configuración de la Subversión.

Notas

Advertencia

Esta función ha sido declarada EXPERIMENTAL. Su funcionamiento, nombre y la documentación que le acompaña puede cambiar sin previo aviso en futuras versiones de PHP. Utilícela bajo su propia responsabilidad.

Ejemplos

Ejemplo #1 Ejemplo básico

Este ejemplo demuestra el uso básico de esta función, y la obtención de contenidos del flujo:

<?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($diff8192);
}
fclose($diff);
fclose($errors);
var_dump($contents);
?>

El resultado del ejemplo sería:

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 Comparando dos revisiones de una ruta de acceso a repositorio

Este ejemplo implementa una función de envoltorio que permite a un usuario comparar fácilmente dos revisiones del mismo elemento utilizando un camino de acceso externo al repositorio (la sintaxis por defecto es detallada):

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

Ejemplo #3 Comparativa portable de dos ficheros locales

Este ejemplo implementa una función envoltorio que compara de forma portable dos ficheros locales, compensando el problema realpath() y el de 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);
}
?>