Organizzazione di un repository git con diversi progetti di condivisione del codice

5

Ho diversi piccoli progetti eseguiti su hardware embedded diverso e circa il 50% del loro codice è identico (in genere alcuni driver, il loro sistema operativo e alcune librerie).

Voglio unire questi piccoli progetti in un singolo repository git in modo che diventi più semplice mantenerli centralmente, ad esempio per aggiornare un driver.

Tuttavia, quando si modifica il codice condiviso tra i diversi progetti, diciamo un driver, non voglio doverlo testare su ogni piattaforma hardware prima di passare al repository git. Non si ridimensiona affatto per testare il codice per un determinato progetto, devo testarlo su uno specifico hardware per progetto e, se necessario, correggere i bug specifici del progetto che potrebbero essere introdotti dalla modifica del codice condiviso. È molto meglio ritardare la verifica della modifica del codice condiviso su un dato progetto la prossima volta che voglio modificare questo progetto.

Al momento, ecco la soluzione con cui sono arrivato: la struttura della directory sarebbe come tale:

                 .
                 |--shared_code
                 |--projects
                    |--projectA
                    |--projectB                       
                    |--projectC

Creerei un ramo git per progetto, che rappresenterebbe solo fino a quando il codice del commit è stato testato per un determinato progetto. Quindi, inserirò il codice solo nel ramo master e unirò il codice dal ramo master a un ramo del progetto una volta testato su questa piattaforma. In questo modo un ramo di progetto sarebbe sempre in uno stato stabile (testato). Il ramo principale sarebbe instabile per la maggior parte dei progetti.

git structure:

                                             master
                                               |
  commits: 1 <-- 2 <-- 3 <-- 4 <-- 5 <-- 6 <-- 7
                 ^     ^                       ^
                 |     |                       | 
  branches:      A     B                       C

È questo il modo corretto per risolvere questo problema? C'è una soluzione migliore?

    
posta Étienne 02.08.2013 - 22:31
fonte

1 risposta

4

Suggerirei di mantenere il codice condiviso nel proprio repository e anche i progetti nel proprio.

Suggerisco di mantenere il codice stabile nel master e il codice instabile nei rami.

Per il repository di codice condiviso, suggerisco di creare un ramo per ogni progetto secondo necessità. Quando hai testato il codice su tutti i progetti, unisci a main.

Penso che sarebbe complicato cercare di gestire tutti i progetti insieme nello stesso repository.

    
risposta data 02.08.2013 - 23:09
fonte

Leggi altre domande sui tag