2009-08-12 10 views
5

Próbuję skonfigurować wspólne repozytorium git za pośrednictwem ssh, kopiując publiczne klucze użytkowników do authorized_keys. Naprawdę bardzo chciałbym, aby "nazwa użytkownika" z ssh-key była częścią historii commitów w repozytorium (tak aby użytkownik "joe" nie mógł po prostu ustawić swojej nazwy na "kate" - potrzebujemy jakiejś odpowiedzialności) . Czy jest jakiś sposób to zrobić?Czy mogę powiązać nazwę użytkownika ssh z commitem z git przez ssh?

Odpowiedz

5

Po prostu nie, nie ma mowy. Powodem jest to, że dane autora i dostawcy są ustawiane, gdy dokonywane jest zatwierdzenie, co zwykle dzieje się lokalnie. A git push dzieje się później, aby wypchnąć istniejące zatwierdzenia do zdalnego repozytorium. Ponieważ zatwierdzenia są już wykonane i odwoływane przez skrót SHA1, nie można ich zmienić podczas operacji wypychania.

To, co możesz rozważyć, to posiadanie wstępnego lub aktualizacyjnego haka, który uniemożliwia użytkownikom wysyłanie potwierdzeń, których nie napisali, ale może to uniemożliwić wiele legalnych zastosowań. Może się okazać, że jedyną sensowną opcją jest zaufanie do użytkowników.

+0

Więc jeśli użytkownik zmienia nazwisko swojego komisarza/autora i adres e-mail i popycha jakiś zhakowany kod, zamieniając się w kolegę, nie ma nic, co mogłoby temu zapobiec na nagim poziomie repo? – pinkvoid

5

To nie zadziała z zdecentralizowanym charakterem git. Wyobraź sobie, że joe łączy gałąź rozwojową kate's. Istnieje commity z Joe i kate w swoim lokalnym klonem teraz:

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

If Joe popycha do centralnego repozytorium teraz, a ty egzekwowania nazwę użytkownika, Kate commity byłoby przypisać joe.

1

Na serwerze Git każdy użytkownik ma własne repozytorium git po stronie serwera. Może mógłbyś pozwolić użytkownikom tylko na popychanie tam, a ty miałbyś administratora wciągającego do "oficjalnego" repozytorium? W ten sposób istnieje pełna identyfikowalność i odpowiedzialność. Będziesz także mieć moderatora z ostateczną odpowiedzialnością.

+0

To dobra sugestia, ale tak naprawdę nie chcemy pojedynczego administratora, ponieważ wszyscy użytkownicy są uznawani za równie zaufanych. Pojedynczy administrator byłby po prostu narzutem, którego unikamy jak ognia ... – krosenvold