/ / Gerrit: come disabilitare il push diretto su "master" ma consentire ad altri rami - git, gerrit

Gerrit - come non consentire il push diretto al "master" ma consentire ad altri rami - git, gerrit

Voglio configurare la configurazione descritta di seguito:

  • L'utente registrato non può inviare direttamente le modifiche al master. Deve spingere questi cambiamenti per la revisione:

    git push origin master - dovrebbe essere respinto da Gerrit (origine = Gerrit)

    git push origin HEAD:refs/for/master - dovrebbe essere permesso da Gerrit

  • L'utente registrato può creare un nuovo ramo. Questo ramo sarà trattato come un backup e un modo di cooperazione tra due o più sviluppatori, quindi non dovrebbe essere rivisto.

    git push origin xyz_abc - dovrebbe essere permesso da Gerrit

Come dovrei configurare Gerrit per raggiungere tale funzionalità?

risposte:

6 per risposta № 1

Non ci sono istruzioni valide da nessuna parte, quindi ho pensato di documentare i passaggi qui.

1. Vai alla pagina di accesso del tuo progetto

Progetti> Elenco> tuo_progetto> Accesso

2. Modifica accesso

Fai clic sul pulsante Modifica

3. Aggiungi riferimento a refs / heads / *

Questo è il riferimento per tutte le spinte dirette. Configureremo chi può fare cosa per questo percorso.

Fai clic su "Aggiungi riferimento" e digita "refs / heads / *" (senza virgolette)

4. Nega il permesso "Push"

Il permesso Push è quello che controlla chi può effettuare push diretti. Unisci push e push a Gerrit saranno comunque consentiti (vedi note sotto).

  1. Fai clic su "Aggiungi autorizzazione" e seleziona "Push".
  2. Seleziona il gruppo di utenti da cui vuoi negare il push (puoi inserire "Utenti registrati" se vuoi bloccare tutti)
  3. Scegli "DENY" dal menu a discesa visualizzato dopo aver aggiunto il tuo gruppo di utenti

5. Salva modifiche

E hai finito, la configurazione finale dovrebbe essere simile a questa:

Configurazione finita


Nota

Se questo non funziona, assicurati di avere il permesso Push impostato su ALLOW su refs / for / refs / * - questo è il permesso che consente di inviare push a Gerrit.


0 per risposta № 2

AFAIK è possibile impostare le autorizzazioni per ogni repo / progetto in gerrit. Ad esempio chi può spingere / chi può forzare la spinta / chi può approvare le tue modifiche e tutto il resto. Controlla sotto il link se è utile:

https://git.eclipse.org/r/Documentation/access-control.html


0 per risposta № 3

Se ci sono molti rami, è possibile utilizzare gli spazi dei nomi (ad es. Dev / *) per i rami e impostare il controllo di accesso per questi spazi dei nomi.