Pregunta

Normalmente, habilitaría extensiones agregando lo siguiente a .hg/hgrc:

[extensions]
hgext.win32text=
[encode]
** = cleverencode:
[decode]
** = cleverdecode:

Sin embargo, quiero que esta configuración tenga una versión, es decir.parte del repositorio, de modo que esté habilitado para que cualquier otra persona (compañeros de trabajo, máquinas de construcción) pueda clonar el repositorio.Tenga en cuenta que quienquiera que clone el repositorio no debería estar obligado a hacerlo cualquier cosa para habilitar estas extensiones.

Parece que no es posible desde la documentación, pero ¿alguien conoce algún truco interesante que pueda ayudarme aquí?

¿Fue útil?

Solución

¿Quieres mercurial hacer algo de forma automática cuando se clona un acuerdo de recompra (actualizar los ganchos o config). Documentación dice que no es posible y da algunas muy buenas razones:

Hooks do not propagate

In Mercurial, hooks are not revision controlled, and do not propagate when you clone,
or pull from, a repository. The reason for this is simple: a hook is a completely    
arbitrary piece of executable code. It runs under your user identity, with your 
privilege level, on your machine. No comments

It would be extremely reckless for any distributed revision control system to 
implement revision-controlled hooks, as this would offer an easily exploitable way to 
subvert the accounts of users of the revision control system. No comments

Así que, claramente, mercuriales sí misma no resolver su problema. Usted afirma claramente que desea nada más que mercurial para resolver su problema, por lo que la respuesta es: lo que está pidiendo no es posible

.

La única manera de resolver el problema es que todos los usuarios tendrán que ejecutar / instalar al menos una vez a la escritura ya que realice las acciones que desee, algo así como la instalación de los ganchos de derecha.

Si quieres ser inteligente al respecto:

  • crear un guión de una sola vez para funcionar que instalará un gancho para copiar la configuración a la derecha en la .hg o el usuario
  • asegurarse de que el gancho, una vez instalado, puede actualizar la secuencia de comandos para distribuir actualizaciones de configuración a los usuarios
  • hacer que el gancho de añadir un poco de marca especial a los mensajes de confirmación
  • negarse en el repositorio central comprometerse que no lleve el mensaje especial

Un poco complicado, pero eso es lo más cerca que puedo imaginar a sus necesidades:

  • usuario ejecutar un script de una vez y se olvidan
  • Puede asegurarse que si el que no se ha ejecutado, no pueden comprometerse a tu repositorio central de

Otros consejos

La versión de desarrollo actual de Mercurial (que se lanzará como Mercurial 1.3 el 1 de julio) admite una %include directiva en sus archivos de configuración.

Eso significa que puedes pedirle a la gente que ponga

%include ../common-hgrc

en .hg/hgrc.Una vez hecho esto, podrá controlar eficazmente su configuración de Mercurial realizando cambios en common-hgrc.Cuando realicen el cambio, la nueva configuración entrará en vigor.

Tenga en cuenta que esto es peligroso:cualquiera que pueda conseguir que introduzcas cambios en tu repositorio ahora puede insertar enlaces arbitrarios en common-hgrc y los ejecutará en el siguiente comando de Mercurial (incluso una línea de comando "segura" hg status).

Usted puede ser capaz de resolver ese problema a través de la ProjRC extensión .

“Esta extensión hace Mercurial buscar y analizar .hg / projrc para los ajustes de configuración adicionales. El archivo se transfiere el clon y de tracción (pero nunca en push)”

¿Qué pasa con la creación de un enlace desde .hg/hgrc a, por ejemplo, customhg/hgrc de modo que consiga versionado. Luego hay que crear algún gancho que copias de nuevo a <=> - por ejemplo, después de cada actualización.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top