2009-05-11 15 views
0

Ceci est une petite addition au script précédent, et cette fois je voudrais enregistrer les détails pour la sauvegarde.la journalisation des transactions mercurial

script /tmp/commit-push-log 

# add all files to the repository 
for REPOSITORY in [email protected] 
do 

    cd $REPOSITORY 

    # commit the changes 
    hg commit -A -m "Commit changes `date`" 

    # push the changes to the remote repository 
    if hg push 
    then 
     logger hg push completed without failure 
    else 
     logger hg push fails 
    fi 

done 

exit 

cat /tmp/commit-push-log | logger 

rm /tmp/commit-push-log 

le problème est que je ne vois pas de messages mercuriels dans le journal. Qu'est-ce qui peut mal tourner dans mon script?

Répondre

1

ma version actuelle

for REPOSITORY in [email protected] 
do 

    # new temp file 
    OUTPUT_LOG=`tempfile` 
    echo -n > $OUTPUT_LOG 

    # checks whether $REPO is a repo 
    if [ ! -d $REPOSITORY/.hg ]; then 
     echo "Not a repository: $REPOSITORY" 
     exit 1; 
    fi 

    # change to that dir 
    cd "$REPOSITORY" 

    logger "Repository: $REPOSITORY" 

    # commit the changes 
    hg commit -A -m "Commit changes `date`" 2>&1 >> $OUTPUT_LOG 

    # push the changes to the remote repository 
    if hg push 2>&1 >> $OUTPUT_LOG 
    then 
    logger hg push completed without failure 
    else 
    logger hg push fails 
    exit 1; 
    fi 

    # log the contents and delete the tempfile 
    cat $OUTPUT_LOG | logger 

    rm -f $OUTLOG_LOG 

done 

exit 0 
+0

Vous n'avez pas indiqué $ OUTPUT_LOG correctement et 10th ligne $ REPOSITORY/.hg n'est pas cité. Essayez 'export TMPDIR ="/tmp/space test "; mkdir "$ TMPDIR';./Your_script' # pour voir ce que je veux dire: +1 pour' tempfile', ne le connaissait pas: –

1
  1. Vous ne devez pas utiliser les noms de fichiers tmp statiques. Utilisez mktemp, c'est beaucoup plus sûr.
  2. Vous devriez cd "$REPOSITORY" au lieu de "cd $ REPOSITORY" ou les choses deviendront amusantes lorsque le REPOSITORY contiendra des espaces ou des caractères spéciaux.
  3. Vous ne devez pas écrire de commentaires de validation automatisés. See here pour le bon article sur ce sujet.
  4. hg génère probablement des erreurs dans stderr. Utilisez hg commit -A -m "$comment" 2>&1 et hg push 2>&1
+0

le script sauvegarde principalement/var/log et/etc à des fins de surveillance à partir de serveurs externes, donc les commentaires de validation automatisés devraient être suffisant pour le but – Jeffrey04

Questions connexes