2009-08-12 20 views
5

Estoy tratando de configurar un repositorio git compartido a través de ssh, copiando las claves públicas de los usuarios a authorized_keys. Realmente me gustaría que el "nombre de usuario" de la clave ssh sea parte del historial de confirmación en el repositorio (para que el usuario "joe" no pueda simplemente configurar su nombre para que sea "kate", necesitamos algún tipo de responsabilidad) . ¿Hay alguna manera de hacer esto?¿Puedo asociar el nombre de usuario de ssh con commit con git over ssh?

Respuesta

5

Simplemente, no, no hay manera. La razón es que los detalles del autor y del committer se establecen cuando se realiza una confirmación y esto generalmente ocurre localmente. Un git push ocurre en un momento posterior para enviar confirmaciones existentes al repositorio remoto. Debido a que las confirmaciones ya están hechas y referenciadas por el algoritmo hash SHA1, no pueden modificarse durante una operación de inserción.

Lo que podría considerar es tener un enlace de pre-recepción o actualización que evite que las personas envíen confirmaciones que no han escrito, pero esto podría evitar muchos usos legítimos. Puede encontrar que confiar en sus usuarios es la única opción sensata.

+0

Entonces, si un usuario cambia el nombre del autor/autor y la dirección de correo electrónico y empuja algún código pirateado disfrazándose de colega, no hay nada que pretenda evitarlo a nivel de repositorio simple. – pinkvoid

5

Eso no funcionará con la naturaleza descentralizada de git. Imagine joe fusiona kate's rama de desarrollo. Hay confirmaciones de Joe y Kate en su clon local de ahora:

* joe: Merge branch 'kate' 
|\ 
| * joe: update foo 
* | kate: fix test 
* | kate: add test 
|/ 
* joe: initial commit 

If Joe empujones en el repositorio central de ahora, y que están haciendo cumplir el nombre de usuario, compromete de Kate se pueden atribuir a joe.

1

En Git-hub cada usuario tiene su propio repositorio git del lado del servidor. ¿Tal vez podría permitir que los usuarios solo presionen hasta allí, y usted tendría un administrador ingresando al repositorio "oficial"? De esta manera, existe una trazabilidad y responsabilidad completas. También tendrá un moderador con la responsabilidad final.

+0

Es una buena sugerencia, pero realmente no queremos un solo administrador ya que todos los committers se consideran igualmente confiables. Un solo administrador sería solo por encima, lo que evitamos como la peste ... – krosenvold

Cuestiones relacionadas