Portare un progetto legacy ampio e complesso sotto controllo git

2

Sono un principiante rispetto a git, ma non al controllo di versione in generale - uso CVS e Subversion da anni. Ho letto entrambi i libri Progit e O'Reilly ( Version Control with Git ), e penso di avere una buona conoscenza dei concetti generali. Sto provando a impostare git per un progetto esistente e sto riscontrando alcuni problemi su cui ho bisogno di indicazioni.

Background: Il progetto coinvolge un chip SoC integrato su cui è in esecuzione Linux. Una terza parte ha fatto lo sviluppo iniziale dell'applicazione e ha creato quattro repository git separati per contenere il codice:

  • Uno per l'SDK del produttore di chip
  • Uno per il kernel Linux
  • Uno per un livello API personalizzato creato dalla terza parte
  • Uno per l'effettivo codice dell'applicazione.

Oltre a questo, ci sono alcuni file aggiuntivi al livello superiore che non sono (ancora) sotto il controllo della versione.

Il primo problema è che mi piacerebbe combinare tutto questo in un unico repository git. In definitiva, un clone di questo nuovo repository di primo livello sarà ospitato sul nostro servizio cloud. Ho esaminato molto materiale in rete (a partire da qui ) per quanto riguarda il sottomodulo e la sottostruttura, ma Non sono ancora sicuro quale sarebbe la soluzione migliore per la mia situazione. Vogliamo essere in grado di continuare a tracciare eventuali modifiche nei quattro repository che possono verificarsi sul server di terze parti, ma dobbiamo anche mantenere la nostra cronologia delle modifiche locali. Qualche suggerimento?

Il secondo problema è che gli sviluppatori locali non hanno fatto il controllo della versione, tranne che per scattare istantanee dell'intero progetto di volta in volta. Per confondere ulteriormente le acque, l'ordine con cui sono state scattate le varie istantanee non è chiaramente documentato. Tieni presente che ciascuna di queste istantanee è composta da un albero con oltre 200.000 file e oltre 6 GB di dati. Tuttavia, sono sicuro che il 99,99% dei file sono identici in tutte le istantanee. Qual è il modo migliore per trovare le differenze tra queste istantanee e alla fine individuare l'ordine corretto in cui inserirle?

Il mio attuale pensiero è quello di prendere quello che ritengo sia il più vecchio e commetterlo per primo. Quindi creare un ramo separato per ciascuno degli altri. Gli strumenti di git diff dovrebbero quindi permettermi di trovare in modo efficiente le differenze e capire quale ordine dovrebbero essere unite nel ramo principale. Pensieri?

    
posta Dave Tweed 13.12.2018 - 23:21
fonte

0 risposte

Leggi altre domande sui tag