Il mio team di sviluppo è appena agli inizi con Mercurial e siamo confusi sul seguente punto:in che modo QA verifica il codice e si fonde con un ramo stabile in mercurial?
Siamo un team di php webdev.
Abbiamo 3 sviluppatori. La maggior parte di ciò che stiamo facendo ora è la correzione di bug su un prodotto molto nuovo. Anche facendo qualche nuovo sviluppo di funzionalità.
Abbiamo 2 persone di controllo qualità. Ogni bugfix e funzionalità devono essere testati prima di poter essere pubblicati.
Finora, ogni sviluppatore ha il proprio repository. Abbiamo un server centrale chiamato WebDev con il proprio repository. Uno sviluppatore si allontana da WebDev, quindi apporta alcune modifiche (cioè risolve un bug) e invia a Webdev. Quindi un tester QA testerà il codice sul server centrale (quindi testando il codice in WebDev) e se funziona, invierà quel codice al nostro server di produzione.
Questo non funziona bene, perché ... cosa succede quando Developer-1 (dev-1) corregge un bug e spinge a WebDev. Allo stesso tempo, dev-2 corregge un bug diverso e spinge a WebDev. la persona QA verifica il codice lì e approva il secondo bugfix ma non il primo. Come avrebbe spinto il secondo changeset alla produzione senza il primo? Sembra che stiamo perdendo tutti i vantaggi di un sistema di controllo della versione.
Ho letto molto sulla ramificazione, ma non riesco a capire come farlo funzionare per noi ... creiamo un nuovo ramo per ogni bugfix e nuova funzione, e l'unico dopo che è stato testato, Il QA si fonderà nel ramo predefinito su WebDev? È il modo migliore, o c'è qualcosa che mi manca?
Grazie !!
---- ---- UPDATE
grazie a tutti coloro che hanno risposto finora. ecco dove sto trattenendo ora ... posso pensare a due soluzioni.
1) dev-1 corregge un bug per bug-101. tira da webdev, si fonde e si impegna localmente. lo mette in prova. Il QA viene prelevato direttamente dal suo repository e testato localmente. se passa, QA attingerà da webdev -> merge -> push a webdev (e se è un grosso cambiamento, può rivedere lì per assicurarti che vada bene). quindi testiamo solo una cosa alla volta, WebDev contiene solo le modifiche che sono state testate localmente dai tester ed è sempre stabile.
2) creare rami per tutto. dev-1 crea il ramo "bugfix-101" quindi spinge su webdev senza unirlo. Il QA può testare il codice derivato e, se approvato, unirlo con il ramo predefinito. Ho quattro domande su questo metodo: (a) è possibile spingere un ramo aperto in un repository remoto? (b) se QA fonde e chiude il ramo su webdev, al prossimo riavvio, il mio repo locale chiuderà e unirà anche il ramo? e (c) come si esegue il test dal codice derivato? quando eseguo l'app Web nel browser, come faccio a testare dal ramo ?? (d) ci sono problemi di prestazioni con la creazione di così tanti rami denominati (supponendo che la maggior parte di essi verrà chiusa rapidamente)?
Grazie ancora.
credo, nuova domanda per le domande in UPDATE aection sarà il modo giusto - sono separati e leggermente diverso dall'originale –