Fonctions SVN
PHP Manual

svn_log

(PECL svn:0.1-0.2)

svn_logRécupère le message d'historisation d'une URL du dépôt

Description

array svn_log ( string $repos_url [, int $revision_no ] )

svn_log() récupère l'historique complète d'un élément à l'URL repos_url , ou l'historique d'une version spécifique si revision_no est défini. Cette fonction est équivalent à la commande svn log --verbose -r $revision_no $repos_url .

Avertissement

Pour les dépôts dont l'historique est important, la sortie peut être énorme (un tableau dont chaque élément représente une version). Cette fonction ne supporte pas le drapeau --limit NUM , ni un intervalle de versions (revision_no doit être un entier).

Liste de paramètres

repos_url

URL du dépôt de l'élément dont on doit récupérer l'historique.

revision_no

Numéro de version de l'historisation à récupérer. Utilisez la constante SVN_REVISON_HEAD pour récupérer l'historisation de la version la plus récente.

Valeurs de retour

En cas de succès, cette fonction retourne un tableau de fichiers au format :

[0] => Tableau, ordonné du numéro de version le plus grand, au plus petit
(
    [rev] => numéro de version
    [author] => nom de l'auteur
    [msg] => message d'historisation
    [date] => date, au format ISO 8601, i.e. date('c')
    [paths] => Tableau, décrivant les fichiers modifiés
        (
            [0] => Array
                (
                    [action] => lettre, spécifiant la modification
                    [path] =>  chemin absolu du dépôt vers le fichier modifié
                )
            [1] => ...
        )
)
[1] => ...

Note: La sortie sera toujours un tableau indexé numériquement de tableaux, même s'il n'y en a aucun, ou seulement un seul message d'historisation.

La valeur de action est un sous-jeu de » la sortie de statut pour la première colonne, où les valeurs possibles sont :

Actions
Lettre Description
M L'élément a été modifié
A L'élément a été ajouté
D L'élément a été effacé
R L'élément a été remplacé

Si aucune modification n'a été effectué à l'élément, un tableau vide sera retourné.

Notes

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et, concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS ! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Exemples

Exemple #1 Exemple avec svn_log()

<?php
print_r
svn_log('http://www.example.com/'23) );
?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

Array
(
    [0] => Array
    (
        [rev] => 23
        [author] => 'joe'
        [msg] => 'Add cheese and salami to our sandwich.'
        [date] => '2007-04-06T16:00:27-04:00'
        [paths] => Array
            (
                [0] => Array
                    (
                        [action] => 'M'
                        [path] =>  '/sandwich.txt'
                    )
            )
    )
)

Exemple #2 Simulation de --limit avec svn et svn_log()

Cette fonction simule le comportement de --limit en utilisant l'exécutable SVN pour retourner la liste des versions.

Note: Cette fonction effectue un total de limit + 1 requêtes : la première requête pour spécifier les versions requises, et ensuite, chacune pour récupérer le message de journalisation de l'élément pour cette requête.

<?php
/**
 * Recupération les dernières $limit entrées de la journalisation
 * @param $repos_url URL du dépôt de l'élément
 * @param $limit Nombre limite de messages
 */
function svn_log_limit($repos_url$limit) {
    
$limit = (int) $limit;
    if (
$limit <= 0) return array();
    
// Drapeau -q utilisé pour prévenir le serveur de l'envoi des messages du journal
    
$output shell_exec("svn log -q --limit $limit $repos_url");
    
preg_match_all('/^r(\d+) /m'$output$matches);
    
$ret = array();
    foreach (
$matches[1] as $rev) {
        
$log svn_log($repos_url, (int) $rev);
        
$ret[] = $log[0]; // Message du journal n'est que d'un seul élément
    
}
    return 
$ret;
}
?>

Voir aussi


Fonctions SVN
PHP Manual