Il mio team e io abbiamo sviluppato un'estensione per Chrome che stiamo ora eseguendo il porting in Firefox. Le due versioni condividono abbastanza di un codice base che sarebbe ridondante per gestire la separazione separata. In teoria, in teoria, la differenza è all'interno di pochi file e struttura di cartelle (una volta che si scollina un sacco di codice specifico della piattaforma dagli interni).
L'estensione di Chrome contiene tutti i file nella directory principale, poiché tutto ciò di cui ha bisogno Chrome è il file manifest e i file possono essere posizionati ovunque. Questo è diverso dal plug-in FireFox, poiché FireFox richiede una struttura di cartelle specifica e in cui si trovano i file.
Non ho mai trovato alcuna discussione riguardante specificamente la gestione di più versioni dello stesso progetto, pur mantenendo una base di codice condivisa comune. Se siete a conoscenza di articoli / discussioni, fatemelo sapere!
La struttura per la nostra estensione di Chrome è:
Root
[House Extension Scripts]
tuttavia il firefox richiede la seguente struttura:
Root
|-Data
|-[Houses Page Injected Scripts]
|-Lib
|-[Houses Plugin Side Scripts]
|-package.json
che rende l'unione e il mantenimento di una base di codice comune un po 'complicata. In questi casi, Root in Chrome e Data in Firefox contengono file prevalentemente comuni (con poche eccezioni). Non sono sicuro di come farlo in Git. In Perforce è possibile selezionare le cartelle da unire in quali cartelle. Quindi vorrei unire una cartella Dev
comune nella cartella root
della cartella dell'estensione chrome e nella cartella data
del plug-in FireFox.
Nella mia mente, la struttura di ramificazione di Git sarebbe qualcosa del tipo:
Firefox-Master/-----------------|-------------------------|---
/ ↗ ↗
Firefox-Dev /-------------|---|--------|-------|---------|---
/ ↗ ↗ ↘
Dev -----------------|-------------|----------|-----------
\ ↘ ↗ ↘
Chrome-Dev \ ------------|---|----|---------------|----|----
\ ↘ ↘
Chrome-Master \-----------------|------------------------|----
dove il ramo Dev
ospita la base di codice comune. Ogni plug-in ha la propria cartella dev, perché ogni versione ha bisogno dei propri file di codice separati per funzionare. Se esiste qualcosa che viene sviluppato nel ramo FireFox-Dev
che può essere incorporato in Chrome, verrà prima unito a Dev
e quindi Dev
verrà unito al ramo Chrome-Dev
. Ogni Master
è indipendente in quanto viene trattato come un ramo "di rilascio".
Mi chiedo come sia gestito su progetti che hanno prodotti portati su più piattaforme. Ad esempio il kernel Linux per x86 e ARM deve avere un problema simile.
Il più grande ostacolo qui è il fatto che entrambi richiedono una diversa struttura di cartelle. Mi chiedo come viene affrontato questo problema usando Git. Voglio essere in grado di sviluppare in un ramo ed essere in grado di unire qualsiasi codice non specifico della piattaforma nelle altre versioni mantenendo le loro strutture di cartelle uniche.
Per favore fatemi sapere se questa è una domanda vaga e se ho bisogno di aggiornare qualsiasi grafico per essere più chiaro. Qualsiasi aiuto è molto apprezzato!