Sono di fronte a una situazione che non sembra avere una soluzione chiara ad essa, il che mi porta a credere che in realtà stia facendo qualcosa di sbagliato. Eccomi di nuovo in cerca di consigli.
Per farti rapidamente capire il mio problema, sto riscontrando problemi nel rilasciare app / sviluppare app, in termini di separazione del codice di produzione con il codice di sviluppo. Ora lascia che ti spieghi in dettaglio.
Per prima cosa, ecco le due cose che ho fatto in passato:
Sviluppa su un singolo ramo (git), dì "dev", e quando abbiamo bisogno di rilasciare, cambia semplicemente tutto manualmente nello stato "produzione", build-archive-release, e siamo a posto.
Per ovvi motivi, questo è completamente non-disponibile e richiede molto lavoro anche quando si pubblicano app semplici.
Sviluppa su un ramo "dev" e, una volta soddisfatti, ci uniamo su un ramo "beta" e quindi su "produzione" e spediamo qualsiasi ramo che deve essere spedito.
Questo è meglio, ma l'inesorabile fusione sembra altrettanto incline all'errore come "un ramo per dominarli tutti". E per di più, mi sento piuttosto inconsapevole di cosa farà esattamente l'unione nei miei file, quando si tratta di specifici file di configurazione. Ad esempio, unendo dev in beta, quale delle API Keys sceglierà nell'unione? La chiave dev o beta? Lo stesso per alcune credenziali o URL di back-end. Sembra davvero più pulito quando lo guardi dall'esterno, ma alla fine, continuo a controllare tutti i miei file uno per uno. E ho avuto brutti cambiamenti, non sono solo paranoico, purtroppo.
Quindi, direi meglio, ma altrettanto manutenibile.
Alcuni hanno consigliato di usare #IF DEBUG
, ma io sono contro di esso, finendo per ingombrare il codice e avere frammenti di due diversi ambienti sparsi nel codice. Alla fine non stai nemmeno testando il prodotto reale, quindi non può funzionare.
E ora eccomi qui, non sapendo cosa fanno gli altri e come loro superano quell'ostacolo. Sono tutto orecchie.
Nota: ho letto un po 'sui build server ma non sono sicuro di averli veramente compresi, e dal mio punto di vista inesperto, li vedo solo come spostare il problema su una macchina remota, che non cambia molto.