2010-12-13 13 views
6

Me pregunto si Mercurial por defecto convierte $ Id $ al equivalente de Subversion que es algo como esto: test.php 110 2009-04-28 05: 20: 41Z dordal $. ¿Alguien sabe?

+0

Usar la conversión de palabras clave con un DVCS es una muy mala idea. Es una buena idea con svn y cvs porque es posible que diferentes archivos en su repo se actualicen a diferentes revisiones, pero en Mercurial o git todos los archivos están en el mismo punto, por lo que puede usar 'hg id' para obtener ese valor o en un script de compilación use algo como '$ (hg id - id)'. –

Respuesta

5

No, no lo hará, pero puede activarlo.

https://web.archive.org/web/20121007024058/
https://www.mercurial-scm.org/wiki/KeywordPlan

por las que usted no lo necesita

expansión de palabras clave no es compatible con el núcleo de Mercurial porque es de utilidad limitada en un sistema moderno y es problemático desde el punto de vista del desempeño y la integridad binaria. Para la mayoría de los usos humanos, uno puede simplemente pedirle al sistema de control de revisiones. ¡Y para situaciones donde el sistema de control de revisión no está disponible, la etiqueta es muy probable que sea incorrecta!

Un uso común que queda es la integración automática de la información de versión en una compilación de software. Esto se logra con bastante facilidad y sin sustituciones de palabras clave haciendo algo como lo siguiente en su Makefile:

...

Emulación básico

Si eso no es suficiente para usted, es posible emular este comportamiento con una extensión.

...

Una extensión de ejemplo que proporciona $ Autor $ y $ $ Fecha de palabras clave se adjuntan (keyword.py)

Ver también KeywordExtension.


https://www.mercurial-scm.org/wiki/KeywordExtension

Palabra clave de extensión

Esta extensión se distribuye con Mercurial allo

general

Esta extensión ws la expansión de claves similares a RCS/CVS y definidas por el usuario en archivos de texto seguidos por Mercurial. La expansión tiene lugar en el directorio de trabajo y/o cuando se crea una distribución usando "hg archive".

Las palabras clave se expanden a los datos del conjunto de cambios pertenecientes al último cambio relativo al directorio primario de trabajo de cada archivo.

Si solo desea versionar su repositorio completo, no use esta extensión, pero deje que su sistema de compilación se encargue de ello. Algo a lo largo de las líneas de ...

,,,

Por razones de seguridad y de velocidad (evitación de palabras clave inadvertidamente expandido) se recomienda habilitar la extensión por cesión temporal sólo en repo/.hg/hgrc, no globalmente, y afinar los patrones del nombre de archivo [palabra clave] con mucho cuidado.

+1

Gracias, debería haber intentado buscar mejor que prácticamente responde mi pregunta. – Darren

+1

@Darren - Me alegra ayudar. Quería asegurarme de que tenías toda la historia sobre la expansión de palabras clave (la forma de Mercurial es no hacerlo, o de lo contrario, habilita lo menos posible). También sé que puede ser difícil determinar el término exacto para buscar en un paquete de software desconocido ("sustitución de palabras clave", "reemplazo de id", "expansión de palabras clave"), especialmente cuando uno de los términos es tan general como "palabra clave" o "id". –

+1

Ahora entiendo por qué no hacerlo, entonces existe la posibilidad de que no lo haga y estoy bastante seguro de que tiene que ver con la manera en que funciona el control de versiones tanto con Mercurial como con Git sobre por qué es una mala idea, especialmente debido a repositorios locales y remotos. – Darren

1

Usted tiene una característica similar con Keyword Extension (distribuido con Mercurial)

Esta extensión permite la expansión de las claves RCS/CVS-y como usuario definidos en archivos de texto seguidas por Mercurial. La expansión tiene lugar en el directorio de trabajo y/o al crear una distribución usando "hg archive".

Las palabras clave se expanden a los datos del conjunto de cambios pertenecientes al último cambio relativo al directorio primario de trabajo de cada archivo.

Por ejemplo:

Id = {file|basename},v {node|short} {date|utcdate} {author|user} 

podría ampliarse como:

$Id: demo.txt,v 2ad3dcb8d811 2007/07/17 12:00:47 blacktrash $ 

Nota:

para la velocidad y seguridad razones (evitación de palabras clave inadvertidamente expandidas) que es recomendado:

  • Para habilitar la extensión por cesión temporal sólo en repo/.hg/hgrc, no globalmente,
  • y para ajustar con precisión los patrones de nombres [keyword] con gran cuidado.
Cuestiones relacionadas