Per un repository git condiviso servito su SSH e HTTPS, come controllare l'accesso per entrambi i protocolli?
Domanda
Sto usando hook / update
per controllare chi può aggiornare specifici ref in un repository condiviso. Funziona benissimo per SSH, ma recentemente ho scoperto (con almeno git-1.6.4.2) questo hook non influenza i push di WebDAV, cioè , qualsiasi utente può aggiornare qualsiasi ramo.
Sì, potrei aggiungere le direttive Richiedi gruppo ...
come in 8 modi per condividere il tuo repository git insieme a file di gruppo separati, ma vorrei evitare di mantenere configurazioni di autorizzazione parallele !
Un'altra alternativa è riscrivere il hook / update
, ma sembra uno spreco dato che sta già funzionando per SSH.
Soluzione
Dovresti capire che per Git (attualmente) HTTPS è un "stupido" protocollo, ovvero l'intero scambio va senza coinvolgere affatto git sul server, inclusi gli hook in esecuzione; è coinvolto solo il server Web (con WebDAV per HTTPS push).
Dovresti comunque dare un'occhiata agli strumenti di gestione degli accessi al repository, come Gitosis (in Python, usando setuptools) o nuovo Gitolite (in Perl, più semplice), o repo dal progetto Android di Google o qualcos'altro. Forse offrirebbero una gestione centralizzata degli accessi.