Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Subversion Discussion :

Recueil de Hooks Subversion [Sources]


Sujet :

Subversion

  1. #1
    Membre habitué
    Inscrit en
    septembre 2007
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 254
    Points : 171
    Points
    171
    Par défaut Recueil de Hooks Subversion
    Bonjour,

    Il me semble que pas mal de monde, dont moi, se posent des questions sur les hook. Comment ça fonctionne, comment les écrire, quel langage utiliser, etc. Je me suit donc dit qu'il serait intéressant d'avoir un petit tutoriel expliquant comment tout ceci fonctionne. J'ai donc été lire la documentation pour voir ce que je pouvais faire avec mes maigres connaissances. En lisant cette documentation je me suis rendu compte que le documentation officiel explique finalement très bien comment les hooks fonctionnent mais que ce qui manque ce sont des exemples concrets.

    Je propose donc, si ça vous intéresse, d'essayer de regrouper sur une page (on va commencer par un sujet du forum) quelques exemples simples de scripts et ce en divers langages selon les OS. Par exemple un script permettant d'obliger un utilisateur à entrer un message de minimum x caractères lors du commit en batch (windows), python (linux) pour commencer. Puis on peut passer à d'autres scripts et d'autres langages le but n'étant pas de se limiter à ces deux là.

    Documentation à propos des Hooks http://svnbook.red-bean.com/nightly/...n.create.hooks

  2. #2
    Membre habitué
    Inscrit en
    septembre 2007
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 254
    Points : 171
    Points
    171
    Par défaut
    - Hook obligeant l'insertion d'un message (min 1 caractère) en batch A améliorer pour obliger x caractères

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    setlocal
    set "REPOS=%~1" 
    set "TXN=%~2" 
    
    :: Make sure that the log message contains some text. 
    for /f "tokens=*" %%i in ('SVNLOOK log -t "%TXN%" "%REPOS%"') do set "LOGMSG=%%i" 
    if not "%LOGMSG%"=="" exit 0 
    
    echo Le commit a ete bloque a cause de l'absence de commentaire. 1>&2 
    echo Veuillez entrer un commentaire resumant le pourquoi du commit. 1>&2 
    echo En vous remerciant, l'administrateur Subversion. 1>&2 
    exit 1
    script de Xavier3131 trouvé ici

  3. #3
    Membre du Club
    Profil pro
    dev
    Inscrit en
    octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : octobre 2002
    Messages : 53
    Points : 61
    Points
    61
    Par défaut
    Le même en shell unix
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #!/bin/sh
    REPOS="$1"
    TXN="$2"
    SVNLOOK=/usr/bin/svnlook
    
    LOGFILE="/svn/log/svn.log"
    DATE=`date +%Y-%m-%d-%Hh%M`
    # l'auteur du commit
    AUTH=`$SVNLOOK author -t "$TXN" "$REPOS"`
    # je mets quelques infos dans un fichier de log
    echo "$DATE $REPOS $TXN $AUTH " >> $LOGFILE
    
    # on verifie la presence de texte dans le log du commit de la transaction TXN
    $SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" > /dev/null
    # $? contient le resultat de la la dernière commande (le grep) du shell 
    # =0 il a trouvé une ou plusieurs lignes qui matchent (cad qui contient du texte)
    # =1 aucune ligne
    RESULT=$?
    if [ $RESULT -eq "0" ];
    then
            # c'est bon, on peut sortir au statut 0
            exit 0
    else
            # c'est pas bon, on lance un message et on sort au statut 1
            # ce qui va bloquer la propagation du commit
            MESSAGE="Message de log obligatoire !"
            echo $MESSAGE   1>&2
            exit 1
    fi

  4. #4
    Membre régulier
    Inscrit en
    avril 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : avril 2008
    Messages : 184
    Points : 90
    Points
    90
    Par défaut
    Pour permettre la modification d'un log :
    (Version windows)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    @ECHO OFF
    :: Set all parameters. Even though most are not used, in case you want to add
    :: changes that allow, for example, editing of the author or addition of log messages.
    set repository=%1
    set revision=%2
    set userName=%3
    set propertyName=%4
    set action=%5
    
    :: Only allow the log message to be changed, but not author, etc.
    if /I not "%propertyName%" == "svn:log" goto ERROR_PROPNAME
    
    :: Only allow modification of a log message, not addition or deletion.
    if /I not "%action%" == "M" goto ERROR_ACTION
    
    :: Make sure that the new svn:log message is not empty.
    set bIsEmpty=true
    for /f "tokens=*" %%g in ('find /V ""') do (
    set bIsEmpty=false
    )
    if "%bIsEmpty%" == "true" goto ERROR_EMPTY
    
    goto :eof
    
    :ERROR_EMPTY
    echo Empty svn:log messages are not allowed. >&2
    goto ERROR_EXIT
    
    :ERROR_PROPNAME
    echo Only changes to svn:log messages are allowed. >&2
    goto ERROR_EXIT
    
    :ERROR_ACTION
    echo Only modifications to svn:log revision properties are allowed. >&2
    goto ERROR_EXIT
    
    :ERROR_EXIT
    exit /b 1

Discussions similaires

  1. [HOOK] Problème(s) pour réaliser le tutoriel sur les HOOKS
    Par Rodrigue dans le forum C++Builder
    Réponses: 13
    Dernier message: 27/07/2016, 18h22
  2. subversion et hook côté client
    Par gpe92 dans le forum Subversion
    Réponses: 1
    Dernier message: 27/07/2010, 16h29
  3. Problème subversion hook script
    Par romain.roy dans le forum Windows
    Réponses: 7
    Dernier message: 22/10/2006, 13h49
  4. [Hook] Clavier Microsoft office keyboard
    Par merzhin dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 01/06/2004, 13h59
  5. touche pour accéder à une application : hook system?
    Par Fox_magic dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 22/01/2003, 00h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo