E 'una buona idea gestire un gruppo di microservizi di pronti contro termine come sottomoduli di un master repo?

6

Al momento della stesura, diciamo che 4 micro servizi interoperano per costruire un sistema più grande. Ogni microservizio ha il proprio repository.

Quello che penso è che sarebbe utile avere repository principali che raggruppano i microservizi figli, aggiungendoli come sottomoduli git.

Quindi, se uno sviluppatore deve lavorare e impostare il suo dev env per: sistemaA composto da ms1, ms2, m3 systemB fatto da ms2, ms3, ms5

dovrà solo clonare il repository di sistema (già collegato alle dipendenze di ms)

O se ho bisogno di costruire un nuovo sistema, creerò un nuovo repository principale che collega a git submodules dipendenze ms

Fondamentalmente il repository padre non conterrà nient'altro che link ai sottomoduli (non so se ne avranno ancora bisogno in questo momento ..)

Sicuramente affronterò il problema di avere uno sviluppo di ms condiviso su sistemi diversi. Quindi forse questo sarebbe risolto usando diversi master master su repository per bambini (uno per ogni sistema di produzione genitore)

Cosa ne pensi di questa pratica? È una buona idea? Lavorare con i sottomoduli potrebbe diventare complicato?

    
posta koalaok 27.01.2017 - 09:14
fonte

1 risposta

9

I sottomoduli Git sono rotti :

  • il flusso di lavoro è difficile da seguire
  • la cronologia
  • è ingombra
  • comportamento non intuitivo per esperti non esperti di git
  • facilmente interrotto (vedere la sezione "Interruzione rapida dei moduli e rottura dei sottomoduli" nel link sopra)

Li abbiamo usati per qualcosa di simile come descrivi, ed è un inferno ora. Si modifica un pezzo di codice e non si è sicuri se sarà il facile da commitare o quello che necessita di alcune acrobazie per passare al sottomodulo, quindi aggiornare il riferimento nel repository padre e quindi premere esso. Di volta in volta ognuno di noi trascorre ore cercando di capire cosa sta succedendo e perché:

a) l'aggiornamento dei sottomoduli ( --recursive ? --remote ?) non viene aggiornato

b) git si lamenta dei cambiamenti, ma il loro commit non li commette

c) sei bloccato su un ramo, non puoi fare nulla finché non risolvi le modifiche nei sottomoduli (la conservazione non funziona, o altri trucchi per ignorare le modifiche)

Ora, lo ammetto, nessuno di noi è un esperto di git e forse facciamo qualcosa di sbagliato di tanto in tanto. Tuttavia, la maggior parte di noi non ha problemi a utilizzare funzionalità git avanzate come rebase e non riusciamo ancora a mettere a fuoco la questione "questa cosa dei sottomoduli".

Non continuerò nemmeno a parlare di quello che succede quando hai sottomoduli all'interno dei sottomoduli ...

Ciò che sembra una soluzione migliore è creare un gestore di pacchetti interno (nel nostro caso abbiamo un server NuGet nella nostra azienda).

Per essere onesti: ci sono progetti in cui i sottomoduli sembrano funzionare bene, ad esempio Qt .

    
risposta data 27.01.2017 - 09:36
fonte

Leggi altre domande sui tag