PHP 8.5.0 Alpha 1 available for testing

svn_status

(PECL svn >= 0.1.0)

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

Descripción

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

Devuelve el estado de los ficheros y directorios de la copia de trabajo, proporcionando las modificaciones, adiciones, eliminaciones, así como otros cambios de los elementos de la copia de trabajo.

Parámetros

path

Ruta local al fichero o directorio del que se desea obtener 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 elementos que no están actualizados), Svn::NO_IGNORE (ignora las propiedades svn:ignore al analizar nuevos ficheros) y Svn::IGNORE_EXTERNALS.

Valores devueltos

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

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

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

path
Ruta 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. Solo ocurre si update está definido como true. Referirse a constantes de estado para posibles valores.
prop_status
Estado de la propiedad del elemento. Referirse a constantes de estado para posibles valores.
repos_prop_status
Estado de la propiedad del elemento en el repositorio. Solo ocurre si update está definido como true. Referirse a constantes de estado para posibles valores.
locked
Si el elemento está bloqueado. (Definido solo si true.)
copied
Si el elemento ha sido copiado o no (previsto para añadir con el registro). (Definido solo si true.)
switched
Si el elemento ha cambiado de repositorio de referencia, utilizando el comando switch. (Definido solo si true)

Estas claves solo están definidas si el elemento está versionado:

name
Nombre base del elemento en el repositorio.
url
URL del elemento en el repositorio.
repos
URL base del repositorio.
revision
Revisión del elemento en la copia de trabajo.
kind
Tipo del elemento, es decir, fichero o directorio. Referirse a constantes de tipo para posibles valores.
schedule
Acción prevista para el elemento, es decir, adición o eliminación. Las constantes para estos números mágicos no están 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 a añadir
define('svn_wc_schedule_delete', 2); // elemento a eliminar
define('svn_wc_schedule_replace', 3); // elemento a añadir y eliminar
}
?>
deleted
Si el elemento ha sido eliminado, pero las revisiones padre aún existen (Definido solo si true.)
absent
Si el elemento está ausente, pero Subversion sabe que debería estar aquí. (Definido solo si true.)
incomplete
Si la entrada del fichero para un directorio está incompleta. (Definido solo si true.)
cmt_date
Timestamp Unix de la fecha del último commit. (No afectado por el parámetro update).
cmt_rev
Revisión del último commit. (No afectado por el parámetro update).
cmt_author
Nombre del autor del último commit. (No afectado por el parámetro update).
prop_time
Timestamp Unix que representa la fecha/hora de la última actualización de las propiedades.
text_time
Timestamp Unix que representa la fecha/hora de la última actualización del texto.

Ejemplos

Ejemplo #1 Ejemplo de uso

Este ejemplo muestra un uso básico 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 // el elemento ha sido modificado
        [repos_text_status] => 1 // Ninguna información disponible, use update
        [prop_status] => 3 // ningún cambio
        [repos_prop_status] => 1 // Ninguna información disponible, use 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 // ninguna acción prevista
        [cmt_date] => 1165543135
        [cmt_rev] => 120
        [cmt_author] => Alice
        [prop_time] => 1180201728
        [text_time] => 1180201729
    )
)

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.

Ver también

add a note

User Contributed Notes 1 note

up
-2
matthijs at fragfrog dot nl
13 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
(ROOT, SVN_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.
To Top