tipos tag repositorio origin example etiquetas eliminar crear git ident

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:

  1. 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) .
  2. 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:

  1. La expansión solo se realiza al ejecutar git archive , en su archivo de salida.
  2. Se realiza a petición , controlado mediante export-subst atributo export-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.