Ho letto Come si tira qualcosa da una versione? , ma non risolve i nostri problemi, poiché il nostro caso è più complesso.
La nostra situazione è la seguente. Stiamo sviluppando un'applicazione per un cliente interno. Stiamo facendo Scrum con quattro team più o meno allineati (vale a dire gli sprint terminano lo stesso giorno), uno dei quali fuori dal sito.
Abbiamo una base DTAP street e noi usa Subversion per il controllo del codice sorgente. Vogliamo implementare il TAP-end della strada dal controllo del codice sorgente, come preparazione per l'utilizzo dell'integrazione continua in seguito. Per essere in grado di distribuire dal controllo del codice sorgente, manteniamo i rami sincronizzati con ciascuno degli ambienti T, A e P.
Il nostro attuale setup è un trunk pulito, che è in sincrono con Production, un ramo acpt che è stato ramificato dal trunk in un determinato momento nel passato e che è sincronizzato con Acceptance e un branch per ogni sprint che si dirama dal branch acpt in l'inizio di ogni sprint e si fonde nuovamente alla fine. Questo ramo di sprint è sincronizzato con l'ambiente di test per la durata dello sprint.
Alla fine di ogni sprint, i problemi risolti vengono uniti nell'account. Viene creato un nuovo ramo di sprint e inizia un nuovo sprint. Nel frattempo, il ramo di attività è schierato in Accettazione e testato lì. Naturalmente, in un mondo ideale, completeremmo tutte le storie degli utenti durante lo sprint e durante l'UAT non ci sarebbero difetti rilevati. Ma ahimè, questo mondo non è perfetto e i problemi sono trovati durante l'UAT. Ovviamente non bug , ma potremmo aver interpretato una richiesta in modo errato. Oppure potrebbe esserci qualche altra ragione per cui una user story non può essere rilasciata (ancora). Quindi ora dobbiamo tirare alcune storie da quel ramo. Poiché le modifiche sono state unite dal ramo sprint al ramo acpt in una volta, questo non è un compito banale.
Come possiamo adattare il nostro metodo per consentire l'estrazione di storie utente dal ramo acpt?
Ho letto anche Controllo della versione agile con più team di Henrik Kniberg. Sembra un modello più adatto alle nostre esigenze, ma anche in questo caso ho alcune domande a riguardo. Se adottiamo il suo modello, dovremmo sincronizzare il trunk con Acceptance? Ciò ci darebbe la possibilità di condurre uno durante uno sprint e di eliminare in modo efficace la programmazione dello sprint dal programma di rilascio. Ma Kniberg promuove una adesione più rigorosa a Scrum rispetto a quella che seguiamo attualmente, in cui le storie degli utenti sono fatte praticamente in sequenza.
Come possiamo adattare il metodo di Kniberg alle nostre esigenze?