svn_import
svn_ls
Fonctions SVN
PHP Manual

# svn_log

(PECL svn:0.1-0.2)

svn_log — Ré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

- » Documentation SVN pour la commande log

svn_import
svn_ls
Fonctions SVN
PHP Manual