Esplorare monorepo contro più repository

Completato

Un repository è il percorso in cui è archiviata la cronologia di lavoro, in genere in una sottodirectory Git.

Come è consigliabile organizzare il repository di codice? I team di sviluppo mirano a separare le responsabilità nel loro software e nei repository. Man mano che passa il tempo, non è insolito che i repository di codice diventino ingombrati da codice e artefatti irrilevanti.

Quando si tratta di organizzare i repository, esistono due filosofie principali: l'uso di un singolo repository (Monorepo) o più repository.

  • Monorepos è un modello di controllo del codice sorgente in cui tutto il codice sorgente viene mantenuto in un unico repository. È facile concedere a tutti i dipendenti l'accesso a tutto contemporaneamente. Clonarlo e hai finito.
  • L'organizzazione dei progetti in repository separati viene definita repository multipli.

La differenza fondamentale tra il repository mono e più filosofie di repository è ciò che consente ai team di collaborare in modo più efficiente. In uno scenario estremo, la visualizzazione di più repository suggerisce che ogni sottoteam può lavorare nel proprio repository. Consente loro di lavorare nelle rispettive aree usando librerie, strumenti e flussi di lavoro di sviluppo che ottimizzano la produttività.

Il costo di utilizzo di qualsiasi elemento non sviluppato all'interno di un determinato repository equivale all'uso di una libreria o di un servizio di terze parti, anche se è stato scritto da qualcuno che si trova nelle vicinanze.

Se si verifica un bug nella libreria, è necessario risolverlo nel repository corrispondente. Dopo aver pubblicato un nuovo artefatto, è possibile tornare al repository e apportare le modifiche del codice necessarie. Tuttavia, se il bug si trova in una codebase diversa o coinvolge librerie, strumenti o flussi di lavoro diversi, potrebbe essere necessario richiedere assistenza al proprietario del sistema e attendere la risposta.

Quando si usa la visualizzazione del repository Mono, la gestione di grafici delle dipendenze complesse può aumentare la difficoltà di usare un singolo repository. I vantaggi di consentire a team diversi di lavorare in modo indipendente non sono sostanziali. Alcuni team possono trovare un modo efficiente di lavorare, ma questo potrebbe non essere vero per tutti i gruppi. Inoltre, altri team possono scegliere un approccio non ottimale, negando eventuali vantaggi ottenuti da altri utenti. Il consolidamento di tutto il lavoro in un repository mono consente di concentrarsi sul monitoraggio stretto di questo singolo repository.

Il fastidio di apportare modifiche in altri repository o attendere che i team apportano modifiche per l'utente venga evitato in un repository mono in cui chiunque può modificare qualsiasi cosa.

Se si individua un bug in una libreria, correggerlo è semplice come trovare un bug nel proprio codice.

Nota

In Azure DevOps è comune usare un repository separato per ogni soluzione associata all'interno di un progetto.