SunshinePHP Developer Conference 2015

svn_status

(PECL svn >= 0.1.0)

svn_statusDevuelve el estado de la copia de trabajo de los ficheros y directorios

Descripción

array svn_status ( string $path [, int $flags = 0 ] )

Devuelve el estado de la copia de trabajo de los ficheros y directorios, dando las modificaciones, adiciones, borrados y otros cambios a los elementos de la copia de trabajo.

Parámetros

path

Path local al fichero o directorio del que se obtendrá el estado.

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__).

flags

Cualquier combinación de SVN_NON_RECURSIVE, SVN_ALL (independientemente del estado de modificación), SVN_SHOW_UPDATES (se añadirán entradas para los elementos que estan desactualizados), SVN_NO_IGNORE (ignorar svn:ignore las propiedades cuando se busquen nuevos ficheros) y SVN_IGNORE_EXTERNALS.

Valores devueltos

Devuelve un array de arrays asociativos indexado numéricamente, detallando el estado de los elementos del repositorio:

Array (
    [0] => Array (
        // información del elemento
    )
    [1] => ...
)

La información del elemento es un array asociativo que puede contener las siguientes claves:

path
String con el path al fichero/directorio de esta entrada en el sistema de ficheros local.
text_status
Estado del texto del elemento. Referirse a constantes de estado para posibles valores.
repos_text_status
Estado del texto del elemento en el repositorio. Sólo es exacto si update se definió a TRUE. Referirse a constantes de estado para posibles valores.
prop_status
Estado de las propiedades del elemento. Referirse a constantes de estado para posibles valores.
repos_prop_status
Estado de la propiedad del elemento en el repositorio. Sólo exacto si update se definió a TRUE. Referirse a constantes de estado para posibles valores.
locked
Si el elemento está bloqueado o no. (Sólo definido si TRUE.)
copied
Si el elemento fue copiado o no (planificado para adición con histórico). (Sólo definido si TRUE.)
switched
Si el elemento fue intercambiado con el comando switch. (Sólo definido si TRUE)

Estas claves sólo estan definidas si el elemento está versionado:

name
Nombre de base del elemento en el repositorio.
url
URL del elemento en el repositorio.
repos
URL base del repositorio.
revision
Entero con la revisión del elemento en la copia de trabajo.
kind
Tipo de elemento, p.e. fichero o directorio. Referirse a constantes de tipo para posibles valores.
schedule
Acción planificada para el elemento, p.e. adición o eliminación. Las constantes para estos números mágicos no estan disponibles, pueden ser emuladas utilizando:
<?php
if (!defined('svn_wc_schedule_normal')) {
    
define('svn_wc_schedule_normal',  0); // nada especial
    
define('svn_wc_schedule_add',     1); // elemento será añadido
    
define('svn_wc_schedule_delete',  2); // elemento será eliminado
    
define('svn_wc_schedule_replace'3); // elemento será reemplazado
}
?>
deleted
Si el elemento fue eliminado o no, pero las revisiones previas existen todavía. (Sólo definido si TRUE.)
absent
Si el elemento está ausente o no, es decir, Subversion sabe que debería haber algo pero no está. (Sólo definido si TRUE.)
incomplete
Si las entradas del fichero o directorio están incompletas o no. (Sólo definido si TRUE.)
cmt_date
Entero con el timestamp de Unix con la última fecha de commit. (No afectado por el parámetro update.)
cmt_rev
Entero con la revisión del último commit. (No afectado por el parámetro update.)
cmt_author
String con el autor del último commit. (No afectado por el parámetro update.)
prop_time
Entero con el timestamp de Unix con el último tiempo de actualización de las propiedades
text_time
Entero con el timestamp de Unix del último tiempo de actualización para el texto

Notas

Advertencia

Esta función ha sido declarada EXPERIMENTAL. Su comportamiento, su nombre y la documentación que le acompaña puede cambiar sin previo aviso en futuras versiones de PHP. Use esta función bajo su propio riesgo.

Ejemplos

Ejemplo #1 Ejemplo básico

Este ejemplo muestra un uso básico, teórico de esta función.

<?php
print_r
(svn_status(realpath('wc')));
?>

El resultado del ejemplo sería algo similar a:

Array (
    [0] => Array (
        [path] => /home/bob/wc/sandwich.txt
        [text_status] => 8 // elemento que fue modificado
        [repos_text_status] => 1 // sin información disponible, usar update
        [prop_status] => 3 // sin cambios
        [repos_prop_status] => 1 // sin información disponible, usar update
        [name] => sandwich.txt
        [url] => http://www.example.com/svnroot/deli/trunk/sandwich.txt
        [repos] => http://www.example.com/svnroot/
        [revision] => 123
        [kind] => 1 // fichero
        [schedule] => 0 // sin acciones especiales planificadas
        [cmt_date] => 1165543135
        [cmt_rev] => 120
        [cmt_author] => Alice
        [prop_time] => 1180201728
        [text_time] => 1180201729
    )
)

Ver también

add a note add a note

User Contributed Notes 2 notes

up
0
matthijs at fragfrog dot nl
3 years ago
There seems to be an undocumented function svn_info (arguably the proper name for this functionality) that does almost the same as svn_status, but ignores the second parameter.

Unfortunately, neither can directly be used to just retrieve the current revision of a working copy, but a combination of svn_status and SVN_NON_RECURSIVE|SVN_ALL will work; simply perform the following command:

<?php
svn_status
(ROOTSVN_NON_RECURSIVE|SVN_ALL);
?>

Where ROOT is of course the root of the working directory you wish to examine. One of the entries will be that working directory, including its current status.
up
0
alan at akbkhome dot com
6 years ago
Currently the method accepts the following arguments:
proto array svn_status(string path [, int flags]]

Where flags are:
SVN_ALL
SVN_SHOW_UPDATES
SVN_NO_IGNORE
SVN_IGNORE_EXTERNALS
SVN_NON_RECURSIVE

or
Svn::ALL
Svn::SHOW_UPDATES
Svn::NO_IGNORE
Svn::IGNORE_EXTERNALS
Svn::NON_RECURSIVE
To Top