git commit –author no requiere contraseña?

Mi situación es la siguiente: hay 2 personas que tienen acceso a un repository privado y trabajan juntos en el código. Pero un tipo ha escrito un código en la computadora de otro tipo y ahora quiere comprometerse con su nombre, no con el nombre de ese otro tipo.

He visto aquí cómo comprometerse con otro autor para el repository. Lo he hecho, pero es extraño que no requiera la contraseña del autor cuyo nombre estaba cometiendo. No es normal Entonces, la gente puede comprometerse a sí misma con un código que no he escrito y del cual no soy responsable.

Git no maneja ninguna autorización. La forma en que funciona, puede cambiar su identidad usando git config o el argumento --author para hacer commits como quiera. Estas confirmaciones se mantendrán locales en su computadora hasta que decida presionarlas.

Los serveres remotos a menudo optan por tener algún tipo de authentication. Esto se hace comúnmente usando el protocolo SSH. Además, muchos agregan una capa de autorización que le impide acceder a los repositorys. Por ejemplo, en GitHub, solo puedes acceder a repositorys de tu propiedad o a los que explícitamente tienes acceso de escritura.

Sin embargo, este control de acceso solo se aplica al acto de impulsar cambios. Entonces, si tiene acceso a un repository, puede enviar lo que desee, con el autor que desee. Es posible que los proveedores agreguen un cheque que rechaza los empujes cuando contienen confirmaciones que no son creadas (o confirmadas) por el usuario agresivo. Sin embargo, este comportamiento generalmente no es deseado.

El motivo es que Git es un sistema de control de versiones distribuidas. Por lo tanto, a diferencia de, por ejemplo, Subversion, las personas no tienen que usar el mismo server centralizado que puede garantizar que usted solo publique los cambios hechos por usted mismo (Subversion solo asume esto y los "commits" solo se crean en el server). En cambio, es posible (ya menudo se desea) que las asignaciones recorran diferentes routes hasta que aterricen en repositorys centrales (también son comunes los repositorys múltiples). Incluso podría trabajar directamente con otro desarrollador e insert cambios, o extraer cambios de su repository privado sin tener que interactuar con algún tipo de server central. Y cuando luego decide publicar commits en un server central, por supuesto que ese server central no debería rechazar los cambios solo porque usted haya incluido los commits de ese otro desarrollador.

Entonces no, no hay garantía de que alguien más no esté usando su "identidad" para crear confirmaciones en su nombre. Sin embargo, Git admite la firma de confirmaciones, para permitirle demostrar que un compromiso es suyo. Cualquier persona que esté interesada en validarlo puede verificar la firma en el compromiso y verificar que haya sido hecho por usted mismo. Algunos serveres de repository incluso pueden requerir que todas las confirmaciones que se envían al server estén firmadas y luego verificar la firma en cada confirmación. Pero eso es totalmente opcional y no es algo que Git venga por defecto; porque de manera pnetworkingeterminada Git es solo un "rastreador de contenido estúpido" .

Sí. Con git puedes hacer commit bajo la personalidad que quieras. Pero puede usar un signo gpg para asegurarse de que este compromiso sea suyo en el futuro:

1. Crea una key:

 ~$ gpg --gen-key 

2. Agregue a .gitconfig la key que desea usar:

 [user] .... signingkey = E4634C2C 

3. Haga una confirmación firmada:

 ~$ git commit -s -m "Signed commit" 

Pero hay algunos inconvenientes:

  1. Debes ingresar el pase antes del compromiso.
  2. Necesita una key gpg secreta en el host local actual.