Qual è l'ordine corretto delle richieste pull e dei test?

3

Vogliamo impostare un flusso di lavoro di sviluppo adeguato. Abbiamo due rami principali: master (release branch) e sviluppo (working branch). Vogliamo utilizzare le richieste pull in modo corretto. Vediamo due modi per farlo:

Il primo:

  1. Create new branch for feature.
  2. Implement feature.
  3. Merge to develop branch.
  4. Test develop branch.
  5. Confirm that everything works.
  6. Create pull request onto master branch.
  7. Merge pull request.

Steps 4 and 7 can return to step 1.

Il secondo:

  1. Create new branch for feature.
  2. Implement feature.
  3. Create pull request onto develop branch.
  4. Merge pull request.
  5. Test develop branch.
  6. Confirm that everything works.
  7. Merge develop into master.

Steps 4 and 6 can return to step 1.

Quale è meglio? O c'è un modo migliore che ho descritto?

UPD: Abbiamo 3 membri del team: sviluppatore, tester e revisore.

    
posta Sviatoslav Yakymiv 08.10.2014 - 12:06
fonte

2 risposte

5

Direi che se utilizzi il primo approccio ("verifichi") rispetto al secondo approccio ("verifichiamo") dipende dalla configurazione e dall'organizzazione del tuo team.

Un piccolo gruppo di membri del team che lavorano a stretto contatto (spesso nello stesso luogo fisico ma non sempre) preferiscono spesso il primo approccio.

Una squadra ampiamente distribuita di persone che non si conoscono bene e che possono lavorare diverse ore e numero di ore può preferire il secondo approccio che dà più controllo all'autorità centrale.

    
risposta data 08.10.2014 - 13:25
fonte
5

Il problema con il primo approccio è che le funzionalità devono passare attraverso il ramo develop dello sviluppatore prima che raggiungano il repository condiviso. Ciò significa che se uno sviluppatore ha pubblicato una richiesta di pull per una funzionalità importante e importante che richiede parecchie discussioni, revisioni, approvazioni e modifiche, si aggrapperà al loro ramo develop e non saranno in grado di inviare richieste pull più piccole in attesa di altre azioni / decisioni relative a quel grande PR.

In sostanza, il ramo locale develop diventa un collo di bottiglia di blocco per ogni sviluppatore.

Il problema con il secondo approccio è che le funzionalità sono testate dopo sono fuse nel ramo develop del repository condiviso. Ciò significa che puoi inserire del codice errato che rovinerà il progetto per tutti finché non verrà risolto. Inoltre, se decidi di posticipare o abbandonare una funzionalità perché è troppo difficile da correggere o perché non puoi risolverla senza rovinare la progettazione generale, devi modificare la cronologia del ramo di sviluppo del repository condiviso, il che non è una cosa molto divertente da fare ...

In sostanza, il ramo condiviso (!) develop diventa un collo di bottiglia di blocco per l'intero team (!!) .

Quindi - Suggerisco un terzo approccio, che evita questi problemi:

  1. Crea un nuovo ramo per funzionalità.
  2. Funzionalità di implementazione.
  3. Filiale funzionalità di prova.
  4. Crea richiesta di pull sul ramo di sviluppo.
  5. Unisci richiesta pull.
  6. Conferma che tutto funzioni.
  7. Unisci sviluppo in master.

In questo modo, il tubo di blocco è il ramo della funzione - e dal momento che puoi averne quanti ne vuoi, non è un collo di bottiglia.

    
risposta data 08.10.2014 - 14:30
fonte

Leggi altre domande sui tag