C'est quelque peu lié à cette question mais c'est une question différente.
Nous avons un référentiel Hg central, servi aux utilisateurs via SSH et mercurial-server . Nous avons un certain nombre de clients Mac, Linux et Windows qui s'y connectent.
Il est arrivé deux fois maintenant que l'un des utilisateurs de Windows a corrompu son référentiel, puis repoussé vers le central le corrompant. Je veux écrire un script de hook entrant sur le référentiel central pour empêcher qu'une transaction ne soit acceptée si elle corrompait le référentiel central.
Bien que je ne connaisse malheureusement pas suffisamment Mercurial pour écrire un tel script. Est-il possible que quelqu'un d'autre soit tombé sur cela? Personnellement, je ne sais pas trop pourquoi hg ne le fait pas par défaut.
la source
Réponses:
Les versions récentes de Mercurial (depuis la 1.5) prennent en charge la validation des données entrantes. Ajouter
à la configuration hg de votre serveur (
.hg/hgrc
ou la configuration hgwebdir devrait fonctionner correctement) pour que le serveur vérifie les données entrantes et refuse les push non valides. Le client verra alors une erreur semblable à:J'espère que cela pourra aider!
la source
Vous devriez peut-être éviter de pousser complètement vers le référentiel. Avec Mercurial et sa nature distribuée, tout le monde peut avoir sa branche, et quand ils se sentent prêts, ils vous le disent et vous vous retirez d'eux. Pas de problèmes de commit-access, pas de push qui va casser des trucs ...
C'est au moins un conseil qu'un de mes amis m'a donné lors de ma migration de SVN vers Mercurial.
Je ne sais pas, si c'est une option pour vous, mais la mise en place d'un référentiel personnel pour tout le monde et puis retirer des personnes dont vous avez besoin pourrait nécessiter moins de travail, que d'essayer d'attraper des poussées dangereuses.
la source
Ne pourriez-vous pas faire la même chose que le blog de David Herron , mais au lieu de le faire lors du pré-routage, faites-le sur le crochet de pré-validation du dépôt central?
la source
Une alternative possible est de:
Cette solution n'est pas ce dont vous aviez besoin, mais au moins, vous obtenez un moyen de restaurer votre référentiel en cas de corruption.
la source