Una persona controlla solo una cartella, in un repository

-1

Come posso dare il controllo completo di una cartella a una persona, mentre il resto è sotto il controllo di un'altra persona. Controllo significa che hanno il potere di approvare le richieste di pull e di impegnarsi a padroneggiare e sviluppare.

Penso che la risposta sia git sottotree o git submodule ma non sono sicuro di quale o se ci sia qualcosa di meglio. Sono preoccupato che non sarà pratico con tutti i settori in cui entrambi saranno attivamente modificati.

Motivazione: Abbiamo un sistema logico complicato. Il modo in cui verifichiamo che funzioni dopo aver aggiunto nuove funzionalità è che abbiamo due implementazioni completamente diverse in lingue diverse e ci assicuriamo che producano gli stessi output dagli stessi input. Due persone sono destinate a essere responsabili rispettivamente di entrambe le implementazioni. Un'implementazione è la produzione e una non è ed è contenuta all'interno di una cartella nella directory di primo livello nel repository git. Abbiamo scoperto che qualcuno era cambiato allo stesso modo erroneamente e si è intrufolato quando eravamo sotto pressione.

    
posta codeMetis 09.10.2018 - 03:28
fonte

1 risposta

1

Il sottomodulo Git potrebbe essere una soluzione, ma in realtà trasforma il repository in più repository non correlati, in cui un repository di livello superiore include i sottomoduli in un commit specifico. Per modificare il codice in un sottomodulo, è necessario prima eseguire il commit delle modifiche al codice nel repository del sottomodulo e quindi confermare la modifica della versione del sottomodulo nel repository di livello superiore. Questo potrebbe essere piuttosto ingombrante e richiederà modifiche ai tuoi strumenti. E questo non può impedire i problemi incontrati a meno che i singoli contributori abbiano solo accesso in scrittura al sottomodulo di un'implementazione.

Un'alternativa sarebbe quella di applicare un flusso di lavoro basato su richieste di pull, in cui le modifiche in alcune cartelle richiedono l'approvazione di persone specifiche. Molti strumenti di revisione (inclusi GitHub e altri) supportano un file CODEOWNERS per descrivere una cartella → mappatura utente responsabile.

Se si dispone di un sistema di elementi di configurazione, è anche possibile aggiungere controlli per verificare che un commit o un ramo non si estendano su più directory speciali. Il controllo dell'output di git diff --name-status master..HEAD potrebbe funzionare.

Nella tua domanda, l'incidente che hai descritto ha avuto due cause: (1) Non c'erano controlli di accesso, consentendo modifiche arbitrarie, e (2) le persone erano impegnate a preoccuparsi dei tuoi normali processi. Qualsiasi soluzione tecnica può solo aiutare con (1) e richiamando maggiore attenzione ai cambiamenti delle altre persone, ma sono a rischio di essere disabilitati o aggirati in "tempo di pressione". Considera anche come puoi affrontare questo problema sociale per promuovere un ambiente di lavoro sicuro e rilassato dove c'è abbastanza tempo per seguire le tue procedure concordate.

    
risposta data 09.10.2018 - 08:35
fonte

Leggi altre domande sui tag