Come organizzare Git per mantenere un codice base usato e modificato in più progetti?

0

Sto cercando di capire il miglior uso di Git per il mio team di sviluppo. Lavoriamo su più progetti C che condividono alcuni moduli comuni , ognuno dei quali varia un po 'in ogni progetto . Un modulo può essere un driver hardware, un driver del sensore che utilizza un driver hardware, una libreria di algoritmi, un'attività che utilizza una libreria con un modulo sensore, ecc.

Ciò significa che se un modulo è sia in projectA che in projectB, uno sviluppatore di projectA potrebbe voler cambiare una parte di codice in questo modulo, per proporre questa modifica al proprietario della libreria che lo accetterà, senza che cambi direttamente lo stato del modulo in projectB. Quindi, lo sviluppatore di projectB potrebbe volere o non volere aggiornare il suo modulo, oltre a modificarlo un po 'per soddisfare le sue esigenze.

Ho già letto questo Q / A ma non sono sicuro che sia lo stesso scenario, penso che in questo Q / A l'autore non voglia modificare il modulo in projectA o projectB. Un'altra differenza con questo Q / A è che preferirei davvero se questo fosse possibile pur avendo tutti i miei moduli nello stesso repository (ma i progetti in repository diversi). Questo perché stiamo lavorando su progetti embedded così le nostre librerie non possono essere veramente indipendenti, sono organizzate per livelli. Sarebbe strano per noi avere un repository per modulo software (sensore, sensore, algoritmo, algoritmo, compito, compito, modulo hardware, modulo hardware, ecc.).

Ho letto anche questo Q / A ma non sono sicuro che l'aggiunta di tutti i moduli in un sottomodulo consenta a uno sviluppatore del progetto di gestire ciascun modulo in modo indipendente.

Sarebbe possibile lavorare in questo modo con un unico repository di libreria / moduli e repository di progetti? Se sì, come dovremmo lavorare? Possiamo considerare i progetti come fork del repository principale dei moduli di raccolta o usarlo come sottomodulo?

Ecco uno schema con ciò che mi piacerebbe ottenere:

    
posta Tim 23.11.2016 - 09:51
fonte

1 risposta

1

Fondamentalmente se accetti una richiesta pull da A e B non la vuoi, non puoi distribuire lo stesso modulo. Ciò significa che è necessario:

  1. Il modulo principale, che include tutto ciò che sviluppi per A & B
  2. Il ramo di un core dedicato allo specifico di A
  3. La branca di un core dedicata allo specifico B

Un'altra soluzione potrebbe essere quella di utilizzare la direttiva del preprocessore per isolare le cose specifiche di A e lo stesso per B, ma non sono sicuro che sia una buona idea a lungo termine e aumenterà la complessità del modulo.

    
risposta data 23.11.2016 - 10:29
fonte

Leggi altre domande sui tag