Una cosa que es importante con el control de versiones es saber quién hizo qué cambio. Si algo cambió y no tenía idea de por qué se realizó el cambio, buscaría en la historia y le preguntaría a la persona que hizo el cambio. Mientras exploro git, una cosa que me pone un poco nervioso acerca de esta característica es que parece muy fácil de falsificar. ¿Qué me impide incluir el nombre/correo de un compañero de trabajo en la configuración global de git para user.name y user.email? Cuando uso algo como gitosis/gitolita (que definió a los usuarios) o github (que supongo que usa algo como gitosis/gitolita), ¿hay alguien para ver quién realmente hizo una confirmación?Historial de registro de Git
Respuesta
Usted puede tener señal de que todo el mundo comete con GPG: see this tutorial.
En el tutorial de la frase de contraseña GPG se encuentra en git config, que parece sin sentido para mí, por lo que quieren tener el gancho solicitar al usuario en cada confirmación.
Por supuesto, si usted no es el gerente, proponiendo que todo el mundo firmar sus confirmaciones pueden ser diplomáticamente difícil, así que sea prudente.
EDITAR: Como Brian señala, esto solo firma el mensaje de compromiso, por lo que no es la buena solución. Guardo la respuesta, ya que aún podría ayudar a entender el problema.
Esa publicación a la que te vinculas es una forma completamente incorrecta de firmar commits. Firma solo el mensaje de compromiso, no el compromiso en sí, lo que significa que cualquiera que quiera hacerse pasar por otra persona simplemente tendrá que reutilizar su mensaje de compromiso. Además, como usted señala, recomienda mantener su frase de contraseña en claro. La firma de confirmaciones suele ser mucho más dolorosa de lo que vale, especialmente una vez que comienzas a lidiar con problemas como el rebasamiento, la aplicación de parches de correo electrónico y cosas similares. –
@BrianCampbell: de acuerdo, editaré mi respuesta. – CharlesB
registros Gitolite (en .gitolite/logs/gitolite-*
) el usuario Gitolite para cada pulsador. Hay un poco más de trabajo para determinar el empuje que introdujo una confirmación particular, pero debe ser sencillo (una forma: colocar etiquetas de peso ligero en la punta de cada empuje, luego usar git name-rev
para encontrar la primera etiqueta después de la confirmación) .
La mayoría de los usuarios de Gitolite probablemente solo tengan una sola clave SSH asociada (keydir/user.pub
), pero es posible que un solo usuario tenga varias claves SSH (keydir/[email protected]*.pub
).
Por lo tanto, para Gitolite basado en SSH, puede asignar cada compromiso a una (o más) claves SSH.
si confía en una clave SSH para identificar con precisión a una persona en particular es otra cuestión (es decir, tiene confianza en los usuarios para mantener sus claves SSH privadas seguro?).
Gitolite también puede moderar el acceso de Git a través de "HTTP inteligente". En ese caso, el servidor web proporciona el nombre de usuario de Gitolite en la variable de entorno REMOTE_USER (es decir, en lugar de utilizar el archivo .ssh/authorized_keys
para identificar al usuario según la clave SSH). La identificación y la autenticación dependen completamente del servidor web (generalmente solo un nombre de usuario y contraseña, pero los certificados SSL por usuario podrían usarse para hacer algo más parecido al acceso basado en SSH).
Por lo tanto, para Gitolite basado en HTTP, puede asignar cada compromiso a una autenticación realizada por el servidor web.
GitHub tiene alguna información similar y que se pueden consultar a través de la parte de la EventsGitHub API (antes sólo parecía estar disponible como parte de las entradas “del suministro de noticias” para sus repositorios vistos). Cada PushEvent identifica el usuario de GitHub que ejecutó la inserción, se actualizó el nombre de la referencia (rama), el nombre (hash SHA1) de la nueva "cabeza" de referencia (la nueva sugerencia de la rama actualizada) y una lista de confirmaciones .
Gracias Chris, esto nos ayudó a mí y a mi administrador de sistemas. – Nic
Este no es un foro de ética o filosofía, afaik; PERO
git permite commits firmados y etiquetas firmadas.Esto debería ayudarte a alimentar tu paranoia :)
- 1. git historial de registro de simplificación
- 2. git branch sin historial
- 3. Registro/historial de llamadas de iPhone
- 4. Git: ¿muestra el historial de un archivo?
- 5. Registro de Git: registro de futuras revisiones
- 6. ¿Guarda el historial de Clearcase en Git?
- 7. Eliminar archivos eliminados del historial de git
- 8. Exportar git con el historial de versiones
- 9. Subárbol de exportación en Git con historial
- 10. ¿Cómo ver el historial de archivos en Git?
- 11. Obtener el historial/registro de un archivo (potencialmente eliminado) en Git
- 12. ¿Funciona el registro de git?
- 13. Ver el historial de registro de TFS mediante fusiones?
- 14. Historial de registro de usuario en Visual Studio 2012/2013
- 15. Rehacer el historial de confirmaciones en GIT sin Rebase
- 16. Archivo de registro de salida de registro de Git
- 17. ¿Es posible limpiar el registro de git en .git cuando se está convirtiendo en grande
- 18. git-subárbol sin squash: ver el registro
- 19. Eliminar 4 confirmaciones de mi historial de git
- 20. deshacer la combinación de git accidental sin historial de regresión
- 21. ¿Cómo puedo "censurar" el historial de un repositorio de git?
- 22. ¿Git registra el historial de cabezas de ramas?
- 23. Git registro tabular formatear
- 24. Registro de Git: el objeto fatal [sha1] está dañado
- 25. git --follow registro, la forma gitpython
- 26. ¿Por qué git log no está configurado de forma predeterminada en el registro de git --follow?
- 27. Borrar el archivo de registro de git
- 28. Salida de registro de Git defectuosa
- 29. git - eliminación de carriles registro de desarrollo
- 30. Git: cómo eliminar el historial antes de una determinada cometer
Es realmente triste cuando no puedes confiar en tus compañeros de trabajo ... –
No estoy diciendo que quisiera o que pensara que alguno de mis compañeros de trabajo lo haría, pero desafortunadamente alguien no está Honesto (incluso los que crees que son) – ryanzec