gestion de la connexion dans un script de sauvegarde automatique
Question
Je dois écrire un script shell à exécuter quotidiennement pour sauvegarder un répertoire à l'aide de mercurial. La plupart des cas d'utilisation sont terminés, sauf que je peux trouver un moyen de créer une connexion automatisée pendant l'exécution du script.
for REPOSITORY in $@
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 success
else
logger hg push failure
fi
done
l'invite de connexion s'affiche après l'envoi de la commande hg push.
La solution
Mercurial vous permet de saisir le nom d'utilisateur et le mot de passe dans l'URL du référentiel:
hg push http://username:password@hg.myco.com/repo
Si vous ne souhaitez pas mettre l'URL sur la ligne de commande, vous pouvez modifier le hgrc
dans le référentiel local et entrez le nom d'utilisateur et le mot de passe dans l'URL default-push
:
default-push = http://username:password@hg.myco.com/repo
Cela signifie que tout hg push
utilisera le nom d'utilisateur spécifié dans le fichier hgrc
.
Autres conseils
Je conviens que vous devez configurer votre script de sauvegarde pour les connexions non interactives. Une solution consiste à utiliser des clés SSH et une solution plus simple consiste à inclure le mot de passe directement dans l’URL.
Mercurial 1.3 facilite l’inclusion de mots de passe HTTP dans vos fichiers de configuration. J'ai maintenant un
[auth]
bb.prefix = https://bitbucket.org/mg/
bb.username = mg
bb.password = pw
section dans mon fichier de configuration. Cela signifie que vous pouvez éviter de stocker vos mots de passe dans plusieurs fichiers et vous concentrer uniquement sur la sécurisation d'un fichier.
En fait, j'utilise une autre nouvelle fonctionnalité afin d'éviter de mettre le mot de passe dans ~ / .hgrc
, car je pourrais vouloir montrer ce fichier à d'autres. Au lieu de cela j'ai
%include .hgauth
dans ~ / .hgrc
et ~ / .hgauth
a la section [auth]
ci-dessus et est lisible par moi seul.