Ho due applicazioni A
e B
.
L'applicazione A
è stata scritta prima dell'applicazione B
, in realtà B
era inizialmente lo stesso fork di A
, quindi ciascuna applicazione conteneva gli stessi moduli e lo stesso codice.
La struttura di aggiornamento della base di codice di entrambi i progetti è stata tale che: l'aggiornamento della base di codice di A
eseguirà l'unione automatica nella base di codice di B
.
Ma a causa di alcuni requisiti specifici, uno dei moduli di B
deve essere diverso da quel modulo in A
. Quindi le persone possono anche cambiare direttamente il codice in B
.
Inoltre, a causa di alcuni requisiti urgenti per B
le persone hanno apportato modifiche direttamente nella base di% di B
. Così nel tempo, questo ha creato alcune differenze in quasi tutti i moduli del progetto.
Questo sta causando numerosi conflitti di merge durante il processo di unione automatica, ovvero quando un utente ha aggiornato la base di codici di A
e quindi nel processo di unione automatica, i conflitti di unione si verificano a causa delle differenze correnti presenti in esso.
Per risolvere questo problema, ho creato una classe statica che contiene i dettagli del prodotto e usiamo quella classe statica per apportare alcune modifiche specifiche dell'applicazione. Ad esempio:
public static class ApplicationDetails
{
public boolean isApplicationA(){ /*.....*/ }
/*.... other details.... */
}
Ora, se abbiamo alcune modifiche specifiche per l'applicazione usiamo questa classe ApplicationDetails.
Ma la base di codice ora è cresciuta e un modulo di esso ha un sacco di classi e di logica in esso. Fare questo per entrambi i progetti sembra un sacco di compiti e richiede molto tempo.
Quale approccio dovrei usare per risolvere questo problema? Dividere completamente il codebase (cioè rimuovere automerge) non è un'opzione perché ci sono ancora molti moduli comuni.