Direi che i passaggi che è necessario prendere nello scenario che descrivi dipendono al 100% per l'ambiente di sviluppo e gli strumenti è stato impostato.
Utilizzando Perforce per il codice sorgente controllo di versione, abbiamo messo a punto un sistema di ramificazione in cui le uscite sono separati dal lavoro di sviluppo e tutti i rami di sviluppo derivano da un unico ramo "accettazione". Ogni ramo viene utilizzato per un singolo problema o per un insieme di problemi strettamente correlati. Non è possibile elaborare altri problemi in un ramo finché le modifiche non sono state integrate nel ramo di accettazione.
Sì, vuol dire che abbiamo molti rami. Sì, eseguiamo molte sincronizzazioni (accettazione fino a un ramo di lavoro) e integrazione (il ramo di lavoro è accettato). Ma il suo valore è incalcolabile quando si passa facilmente da un'attività all'altra, tornando a un test costruito, individuando due problemi che si mordono, ecc.
Dopo lo sviluppo ha fatto il suo dovere (inclusi i propri test) , un problema è testato dal team di controllo qualità. Primo in isolamento nel proprio ramo. Dopo questo è integrato nel ramo accettazione e viene eseguito un test di regressione per trovare eventuali problemi con problemi indipendenti che si mordono a vicenda. Quando tutti i problemi relativi a un rilascio sono stati così integrati nell'accettazione, il team di controllo qualità esegue una regressione completa e un nuovo test di funzionalità.
Quindi, il ramo di accettazione è sempre lo stato "ultimo" di sviluppo per l'app.
in questo insieme lo scenario che descrivi avrebbe giocato come:
Lascia il mio compito attuale così com'è, forse il check-nei cambiamenti in sospeso in modo da non perderli quando il mio computer si blocca. Se ciò comporta la rottura di una build giornaliera di quel ramo, non effettuerei il check-in, a meno che non sia facile correggere gli errori di compilazione. (Si noti che abbiamo molte app nella nostra suite di applicazioni e mentre le mie modifiche possono essere compilate nell'app a cui sto lavorando, potrebbero comunque interrompere la compilazione di altre app nella nostra suite) La nostra regola è: ogni invio potrebbe interrompere la funzionalità, ma non deve rompere il processo di costruzione.
Trova un ramo "vuoto", un ramo che non è attualmente utilizzato per alcun lavoro di sviluppo o, se tutti i rami sono stati creati, ne crea uno nuovo.
Forza sincronizzazione del ramo di accettazione e del ramo di lavoro selezionato in modo che la mia macchina abbia lo stato più recente per entrambe le filiali.
Sincronizzare (forzato se necessario) lo stato più recente del ramo di accettazione sul ramo di lavoro, quindi il ramo di lavoro selezionato è lo stesso del ramo di accettazione.
Aprire la suite di applicazioni di quel ramo nell'IDE, eseguire il debug e risolvere. Invia al ramo di lavoro.
Chiedi a QA di dare un'occhiata al ramo di lavoro. Se sono soddisfatti, integrare le modifiche fino all'accettazione in modo che possano continuare il test.
Ripristinare l'IDE per lavorare sulla suite di applicazioni nel ramo su cui stavo lavorando in precedenza.
Risciacquare e ripetere.
fonte
2010-06-26 10:48:58
Dovrebbe * sicuramente * essere il wiki della comunità. –
In che modo i panettieri vanno dal pane al forno alle torte glassate? –