Gestire più versioni di un'applicazione Web usando Git


12

Abbiamo una famiglia di app, tutte con la stessa base. Fino ad ora ho sviluppato questa base e il flusso di lavoro Git era molto semplice:

  • Lo sviluppo è fatto in developfiliale
  • Le nuove funzionalità sono sviluppate in name-of-the-featurefiliale
  • I rilasci sono effettuati in release-**filiale

Fino ad ora, il codice era lo stesso per ogni app della famiglia. Diciamo che la base che condividono è ora completa e da ora in poi il codice sarà diverso per ogni app.

Non sono sicuro di come dovrei gestire git e queste app multiple che hanno la stessa base.

  • Ognuno di loro dovrebbe avere il proprio progetto git ?
  • Dovrebbero essere nello stesso progetto, ma ognuno nel proprio ramo ?

Il punto è: se li inserisco in progetti separati, ogni modifica apportata nella base dell'app dovrà ripetermi in ciascuna app. Non ho molta familiarità con git , ma se memorizzo ogni progetto in un ramo , sarà possibile unire la modifica di base con ogni app?

Qualcuno ha vissuto una situazione come questa? Non sono sicuro di come procedere.

Grazie!

EDITED Quando ho detto versione non intendevo i numeri di versione. Sono in realtà app diverse che condividono la stessa base.

Risposte:


7

Lasciare l'app di base nel proprio repository e creare nuovi progetti che dipendono dal jar compilato da quel repository.

I rami Git non sono per più app. Git preferisce utilizzare un repository per ciascun progetto o una relativa famiglia di progetti. I rami sono lì in modo che tu possa sviluppare le funzionalità in modo isolato, non così puoi creare un progetto completamente nuovo senza uscire dal repository.

Non vuoi avere più app che condividono codice: è un incubo per la manutenzione. Se, come suggerisci, sviluppi ciascuno come un ramo nel tuo repository centrale, avrai un sacco di fusioni in corso per propagare le modifiche a ciascuna app. È molto più facile dipendere da una singola libreria separata e usare qualcosa come Apache Maven per ottenere le dipendenze del progetto.


Gran parte del codice condiviso è il codice GWT (visualizzazioni, servizi, ecc.). È possibile estrarlo in una libreria jar? O è possibile solo il codice Java sul lato server?
João Daniel,

Gli elementi della vista possono essere estratti, ma probabilmente non in un barattolo. Ad esempio, JavaScript può essere estratto da ogni pagina in un singolo file che può quindi essere incluso in ciascun progetto. Il codice comune JSP deve essere estratto nei tag JSP. Probabilmente non hai bisogno di tirare intere pagine, ma non conosco il tuo progetto, quindi potrei sbagliarmi.
Michael K,

cosa ne pensi di questo approccio: stackoverflow.com/a/2540471/2615737 ? sembra ragionevole ...
Francisco Corrales Morales,

Non credo sia lo stesso caso d'uso. Questa risposta riguarda due versioni della stessa app che sono leggermente diverse, mentre questa domanda riguarda quelle che vedo come applicazioni completamente diverse. Preferirei comunque non avere affatto il ramo anche nel caso "leggermente diverso"; tuttavia, è difficile scomporre le funzionalità per separare le librerie in Android se sono presenti viste xmls. Sembra che quel risponditore non pensasse che valesse la pena per la sua situazione.
Michael K,

6

Se le app non modificheranno la base stessa, prendere in considerazione l'idea di lasciare la base nel proprio repository. Quindi crea un nuovo repository per ciascuna delle singole app e aggiungi la base come sottomodulo git .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.