Mercurial, sauvegarde automatique

Bonjour,

J’ai installé un serveur mercurial sur une machine, seulement, j’ai une vague sensation que le disque dur est sur le point de lacher…

Ce changement est prévu, mais en attendant, ça doit fonctionner…

Je voudrais faire une sauvegarde automatique du dépot sur un autre serveur ou machine.

Est il possible de déclancher cette mise à jour, pour chaque “hg push” sur le serveur ? (si non, je devrais faire un script de sauvegarde en ftp avec cron, et forcément, je perdrais une journée de code(au maximum)

merci

En utilisant des hooks (incoming ? changegroup ?) et en faisant un push à ton tour ?
hgbook.red-bean.com/read/handlin … hooks.html

NB: je ne connais rien à mercurial, mais c’est comme ça que je ferais pour SVN. :mrgreen:

Il y a pas moyen de faire un push générale sur un autre serveur Mercurial ou un “export” http des dépôts.

En tout cas ça m’intéresse je compte me remettre un petit Mercurial en place d’ici quelques mois pour me ramener du travail à la maison.

Déclencher un pull distant dans le hook ? (genre, connexion SSH bloquée sur la commande de pull, du coup tu peux te passer de mettre un mot de passe sur la clé et donc c’est automatisable) :mrgreen:

j’utilise bien le hook pour faire un update automatique sur le serveur

[code]

[paths]
default = ssh://vohu@mondépot1//code

[hooks]
changegroup = hg update[/code]

mais je ne peux pas ajouter un genre :
changegroup = hg addr && hg commit -m "sauvegarde automatique - date" && hg push

comment définir un dépot secondaire pour un même répertoire ?

La seule solution que je vois maintenant, est de faire un script de sauvegarde ftp scp ou rsync

Déclencher un pull distant dans le hook ? (genre, connexion SSH bloquée sur la commande de pull, du coup tu peux te passer de mettre un mot de passe sur la clé et donc c’est automatisable) :mrgreen:[/quote]

Un pull distant ok, mais ça revient à faire un cron à interval rapproché, et qui ne peut réagir au push du serveur principal

Push du client -> déclenche un hook sur le serveur ->connexion SSH qui lance un pull sur le 2ème serveur.
En quoi c’est équivalent à un cron ? Y’a un truc que j’ai loupé ?

Et j’ai pas compris ça :

[quote=“vohu”]mais je ne peux pas ajouter un genre :
changegroup = hg addr && hg commit -m "sauvegarde automatique - date" && hg push[/quote]
Pourquoi tu ne peux pas l’ajouter ?

bien j’ai 2 serveurs.
serveur1 avec le dépot mercurial (et sa config dans .hg/hgrc) si j’ai bien compris, sur ce serveur, le dépot est local, donc le hg commit agit sur lui meme, comme si je faisais du versionning en local…
serveur2 où je voudrais ma sauvegarde. comment faire pointer le dépot du serveur1 ici avec un seul fichier hgrc…
Quand je push sur un client, l’évènement push execute la commande qui se trouve à la ligne changegroup (voir, autre évènement)

En attendant j’ai réglé le problème comme ça :
fichier hgrc serveur1

[code][ui]
username = Depot xxxxxx xxxxxx@gmail.com
verbose = True

[hooks]
changegroup = hg update && sh /home/vohu/code/sauvhg.sh
[/code]

fichier sauvehg.sh

#!/bin/bash rsync -e ssh -av --delete-after /home/vohu/code/ vohu@serveur2:/media/archives/dev/sauvehgserveur1 --exclude '.hg'

Le truc qui est pas mal, c’est que quand je push sur mon client, je vois la sortie console du script rsync executé sur le serveur1