Esto está algo relacionado con esta pregunta, pero es una pregunta diferente.
Tenemos un repositorio central de Hg, servido a los usuarios a través de SSH y mercurial-server . Tenemos varios clientes Mac, Linux y Windows que se conectan a él.
Ha sucedido dos veces ahora que uno de los usuarios de Windows ha corrompido su repositorio, y luego regresó al central corrompiéndolo. Quiero escribir un script de enlace entrante en el repositorio central para evitar que se acepte una transacción si corrompe el repositorio central.
Aunque desafortunadamente no sé lo suficiente sobre Mercurial para escribir un guión de este tipo. ¿Alguna posibilidad de que alguien más se haya encontrado con esto? Personalmente, no estoy muy seguro de por qué hg no hace esto por defecto.
fuente
Respuestas:
Las versiones recientes de Mercurial (desde 1.5) admiten la validación de datos entrantes. Añadir
a la configuración hg de su servidor (
.hg/hgrc
o la configuración hgwebdir debería funcionar bien) para que el servidor verifique los datos entrantes y rechace los empujes no válidos. El cliente verá un error similar a:¡Espero que ayude!
fuente
Tal vez debería evitar empujar al repositorio por completo. Con Mercurial y su naturaleza distribuida, todos pueden tener su rama, y cuando sienten que están listos, se lo dicen y usted se retira de ellos. Sin problemas de acceso de compromiso, sin empuje que rompa cosas ...
Este es al menos un consejo que un amigo mío me dio cuando estaba migrando de SVN a Mercurial.
No sé, si esta es una opción para usted, pero configurar un repositorio personal para todos y luego extraer de las personas que necesita podría requerir menos trabajo que tratar de atrapar empujes peligrosos.
fuente
¿No podría hacer lo mismo que el Blog de David Herron , pero en lugar de hacerlo en el enrutamiento previo, en el gancho de precompromiso en el repositorio central?
fuente
Una alternativa posible es:
Esta solución no es lo que necesitabas, pero al menos, obtienes una forma de deshacer tu repositorio en caso de corrupción.
fuente