2009-08-12 5 views
5

J'essaie de configurer un dépôt git partagé via ssh, en copiant les clés publiques des utilisateurs sur les touches authorized_keys. Je voudrais vraiment que le "nom d'utilisateur" de la clé ssh fasse partie de l'historique de commit dans le repo (pour que l'utilisateur "joe" ne puisse pas simplement donner son nom à "kate" - nous avons besoin d'une sorte de responsabilité) . Est-ce qu'il y a un moyen de faire ça ?Puis-je associer le nom d'utilisateur ssh avec commit avec git sur ssh?

Répondre

5

Simplement, non, il n'y a aucun moyen. La raison en est que les détails de l'auteur et du committer sont définis lors de la validation, ce qui arrive généralement localement. Un git push se produit ultérieurement pour transférer les validations existantes vers le référentiel distant. Comme les validations sont déjà effectuées et référencées par le hachage SHA1, elles ne peuvent pas être modifiées lors d'une opération push. Ce que vous pouvez faire est d'avoir un hook de pré-réception ou de mise à jour qui empêche les utilisateurs de pousser des validations qu'ils n'ont pas créées, mais cela pourrait empêcher beaucoup d'utilisations légitimes. Vous pouvez trouver que la confiance de vos utilisateurs est la seule option raisonnable.

+0

Ainsi, si un utilisateur modifie son nom de committer/auteur et son adresse e-mail et pousse un code piraté à se déguiser en collègue, rien n'est prévu pour l'empêcher au niveau du repo nu? – pinkvoid

5

Cela ne fonctionnera pas avec la nature décentralisée de git. Imaginez joe fusionne branche de développement de kate. Il y a commits de Joe et kate dans son clone local maintenant:

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

Si Joe pousse au dépôt central maintenant, et vous font respecter le nom d'utilisateur, commits de kate seraient attribués à joe.

1

Sur Git-hub, chaque utilisateur dispose de son propre référentiel git côté serveur. Peut-être que vous pourriez permettre aux utilisateurs de pousser seulement là-bas, et vous auriez un admin tirant dans le référentiel "officiel"? De cette façon, il y a une traçabilité et une responsabilité complètes. Vous aurez également un modérateur avec la responsabilité ultime.

+0

C'est une bonne suggestion, mais nous ne voulons vraiment pas un seul administrateur car tous les committers sont considérés comme ayant la même confiance. Un seul admin serait juste au-dessus, que nous évitons comme la peste ... – krosenvold