Git flow con un layer UAT

1

Ho letto molto sui workflow di git più popolari, tra cui Un modello di successo di Git Branching , fusione, rebasing e cherry-picking, ma non sono ancora in grado di applicare tutto questo su come risolvere il problema descritto di seguito. Sento che la raccolta delle ciliegie potrebbe aiutarti, ma non sono sicuro che sia la migliore idea.

Diciamo che ho tre sviluppatori che lavorano su tre funzioni nei rami f1, f2, f3 e che vengono uniti in un ramo di sviluppo, creando 3 commit uno sull'altro. Le modifiche passano attraverso la UAT del cliente, e il cliente decide che f1 e f3 vanno bene, ma f2 ha bisogno di un po 'di lavoro.

Come potrei ottenere questo? Quali sono alcuni modi di buona pratica in cui posso avere f1 e f3 in diretta nella versione corrente, ma f2 può andare nella prossima versione?

Grazie.

    
posta Shobit 08.10.2017 - 02:14
fonte

2 risposte

1

Il tuo problema va un po 'oltre i normali workflow di git e può essere gestito in diversi modi.

Se il problema riscontrato durante UAT è veramente piccolo e può essere risolto "mentre il cliente è in attesa", è possibile eseguire una rapida correzione seguita da un nuovo UAT di f2 e una versione di tutte e tre le funzionalità.

Se il problema è più consistente, potresti ripristinare l'unione di f2 in fase di sviluppo, eseguire un test di regressione per verificare che non si sia rotto nulla e quindi rilasciare le restanti funzioni.

Se ci si aspetta che i commenti del cliente durante la UAT siano piuttosto comuni, allora sarebbe una buona idea considerare di fare un (pre) UAT con il cliente prima che la funzionalità venga effettivamente integrata nello sviluppo. Quindi è possibile elaborare i nodi fuori dalla funzione prima che possa influire sulla pianificazione delle versioni di altre funzionalità.
Se ci si aspetta che più funzionalità in fase di sviluppo si influenzino a vicenda, è possibile anche creare rami temporanei in cui queste funzionalità sono integrate tra loro per eseguire un test su entrambi.

    
risposta data 08.10.2017 - 10:58
fonte
1

Non penso che esista una soluzione tecnica a questo problema. Ho avuto scenari simili in passato e cercare di risolverlo tecnicamente (avendo rami separati) è al massimo ingombrante, e nel peggiore dei casi infernale.

Se la decisione che caratterizza in realtà lo rende nella tua versione finale è fatta in ritardo nel processo di sviluppo, dovresti pensare ad un altro modo di integrarli nel prodotto finale. Beh, in realtà dovresti pensare di educare il cliente che fare tutto questo lavoro di sviluppo in anticipo solo per rinviare l'implementazione vera e propria è una cattiva idea in sé - ma so quanto possa essere difficile.

Un esempio (che non è la soluzione in ogni caso) è di avere il codice unito al ramo di sviluppo regolarmente (usando il modello di "Un modello di successo di Git Branching") ma avendo una caratteristica attiva / disattiva la posizione che decide se la funzione è effettivamente attiva e visibile durante il runtime.

    
risposta data 09.10.2017 - 12:22
fonte

Leggi altre domande sui tag