¿Cómo habilito ident $Id$
en archivos en un repositorio de Git?¿Cómo habilito la cadena de identificación para repositorios Git?
Respuesta
Puede hacer esto agregando un patrón para los archivos que 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) Manual Page
Acabo de jugar con esto y, por lo que puedo decir, esto solo da un SHA para un archivo específico, no un $ Id $ para todo el repositorio. – Aaron
¿Qué pasa con '% Format%'? –
Resumen: Forma recomendada de incrustar información de la versión del producto es utilizar sistema de construcción para eso; ver a continuación para obtener detalles y enfoques alternativos.
En Git (y creo que por lo general también en otros sistemas de control de versiones con commits atómicas) no hay tal cosa como versión de un solo archivo .
Git hace de soporte de expansión en la demanda de $Id:$
palabra clave, pero:
- Se realiza bajo petición solamente. Debe especificar (tal vez usando un patrón globbing) que un archivo (o un conjunto de archivos) tiene un conjunto
ident
attribute (en el archivo '.gitattributes' en árbol, o en '.git/info/attributes' para la configuración del repositorio local) . - Se expande a SHA-1 del archivo (o para ser más exactos 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, requerirá actualizar cada archivo controlado por versión, p. al cambiar de ramas.
Git apoya bastante un amplio conjunto de $Format:...$
marcadores de posición que se expande para cometer información (por ejemplo $Format:%H$
reemplazado por un hash cometer) pero:
- de expansión se realiza solamente cuando se ejecuta git archive, en su salida archivo.
- Se hace bajo pedido, controlado a través de
export-subst
atributo.
El método recomendado para la incorporación de información de la versión es hacerlo a través del sistema de acumulación (en una etapa de construcció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) utilizar el controlador de filtro clean/smend (mediante el atributo filter
) para obtener la expansión de palabra clave CVS, expandir las palabras clave al finalizar y limpiarlas al ingresar los contenidos en el repositorio.
controlador de filtro sería realmente genial si realmente tuviera alguna potencia. Por lo que parece, solo parece obtener un nombre de archivo como parámetro, es decir, menos que el filtro ident, obteniendo BLOB SHA1 como parámetro. Si pudiéramos pasar '$ Format: ... $' para filtrar la línea de comandos del controlador, eso lo haría todo mucho mejor. Y eso debería comenzar con el conjunto de caracteres de archivos de texto ... –
No existe una versión de un solo archivo, pero existe el estado de todos los archivos en un momento dado. ese estado está representado por un hash. –
@GeorgeStocker: sí, el estado de todos los archivos puede representarse mediante el hash SHA-1 del objeto de árbol superior del proyecto, pero es algo diferente del hash SHA-1 del objeto blob, es decir, del contenido del archivo. –
El identificador 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).
- 1. ¿Cómo comparo dos repositorios git?
- 2. ¿Cómo organizas tus repositorios git?
- 3. Cómo sincronizar dos repositorios git
- 4. Tener múltiples repositorios Git
- 5. git fusionar diferentes repositorios?
- 6. Administración de muchos repositorios git
- 7. repositorios git anidados?
- 8. Concatenar la historia de dos repositorios Git?
- 9. grep para cosas en múltiples repositorios git
- 10. La fusión de dos repositorios Git
- 11. ¿Cómo configurar repositorios públicos de git?
- 12. Git push solo para repositorios desnudos?
- 13. SVN Monitor como software para repositorios Git
- 14. Cómo detectar conflictos entre dos repositorios git.
- 15. Cómo sincronizar repositorios Git en 2 servidores
- 16. ¿Cómo mantener dos repositorios git sincronizados?
- 17. ¿Cómo se combinan dos repositorios git?
- 18. Cómo mantener los repositorios GIT sincronizados
- 19. Cómo clonar repositorios git en redmine?
- 20. ¿Cómo compartir archivos en repositorios git?
- 21. repositorios git anidados sin submódulos?
- 22. Repositorios privados y públicos de Git para el mismo proyecto
- 23. ¿Cómo habilito la salida de color msysgit cuando uso console2
- 24. Extensiones de Git utilizables con repositorios SVN?
- 25. Mejores prácticas para repositorios git en proyectos de código abierto
- 26. ¿Cómo habilito php para trabajar con postgresql?
- 27. ¿Cómo se manejan los repositorios grandes de git?
- 28. Cómo anidar repositorios de git; buscar y fusionar
- 29. Procedimiento para clonar repositorios Git que usan el subárbol
- 30. Git pulling changes entre dos repositorios locales
¿Quieres decir que SVN sí? – Ikke