repositorio - git push tag
¿Cómo habilito la cadena de identificación para un repositorio de Git? (3)
Ident de Git no hace lo que $ Id $ hace en otros sistemas de versiones. Como un kludge, use RCS junto con git: RCS para revisiones de archivos individuales y git para marcar el proyecto como un todo. Como dije, esto es un desafío, pero tiene sentido (a veces para algunas cosas).
¿Cómo ident $Id$
en archivos en un repositorio de Git?
Puede hacer esto agregando un patrón para qué archivos desea esta funcionalidad, seguido de ident
en el archivo .gitattributes
. Esto reemplazará $ Id $ con $ Id: <40-digit SHA> $ en la salida del archivo. Sin embargo, tenga en cuenta que no le dará un número de revisión del archivo como en CVS / SVN.
Ejemplo:
$ echo ''*.txt ident'' >> .gitattributes
$ echo ''$Id$'' > test.txt
$ git commit -a -m "test"
$ rm test.txt
$ git checkout -- test.txt
$ cat test.txt
Enlace a gitattributes (5) Página manual
Resumen: la forma recomendada de incorporar información de versión en un producto es usar el sistema de compilación para eso; ver a continuación para obtener detalles y enfoques alternativos.
En Git (y creo que generalmente también en otros sistemas VCS con commits atómicos) no existe la versión de un solo archivo .
Git admite la expansión bajo demanda de la palabra clave $Id:$
, pero:
- Se realiza solo bajo petición . Debe especificar (quizás utilizando un patrón globbing) que un archivo (o un conjunto de archivos) tiene un conjunto de attribute
ident
(en el archivo ''.gitattributes'' en árbol, o en ''.git / info / attributes'' para la configuración del repositorio local) . - Se expande al SHA-1 del contenido del archivo (o para ser más exacto a
$Id:<sha-1 of blob>$
). El motivo de esta elección es que Git no toca archivos que no han cambiado durante el cambio de rama o el rebobinado; si ''$ Id: $'' se expandió a la información de revisión, se necesitaría actualizar cada archivo controlado por la versión, por ejemplo, al cambiar de rama.
Git admite un conjunto bastante amplio de $Format:...$
placeholders que se expande para confirmar la información (por ejemplo, $Format:%H$
reemplazado por un commit hash) pero:
- La expansión solo se realiza al ejecutar git archive , en su archivo de salida.
- Se realiza a petición , controlado mediante
export-subst
atributoexport-subst
.
La forma recomendada de incorporar información de versión es hacerlo a través del sistema de compilación (en una etapa de compilación); ver, por ejemplo, el script Git Makefile y GIT-VERSION-GEN utilizado por Makefile en la interfaz web de Git para el repositorio de git.git.
Sin embargo, puede (ab) usar un controlador de filtro limpio / difuminado (a través del atributo de filter
) para obtener una expansión de palabras clave similar a CVS, expandir las palabras clave al finalizar la compra y limpiarlas al ingresar los contenidos en el repositorio.