Utilizzo delle richieste di pull con diversi commit

2

Per un nuovo progetto, proviamo a impostare il processo di sviluppo e l'intenzione è di avere un processo semplice e pragmatico. Utilizziamo Atlassian Stash con Git nella nostra azienda.

Siamo arrivati alla seguente proposta:

Nel repository centrale esistono due rami development e production . Tutto lo sviluppo avviene nel ramo development e tutti i commit sono fatti in questo ramo.

Se uno sviluppatore ha terminato una funzione, crea una richiesta di pull in modo che la nuova funzionalità possa essere rivista e unita in production , dove avviene tutta la verifica finale e la distribuzione.

Nella discussione di oggi è nata la domanda, se è possibile creare una richiesta di pull per una funzionalità, se sviluppatori diversi sviluppano funzionalità diverse in un ramo.

Quindi il commit sarebbe simile a questo:

commit 1: feature 1

commit 2: feature 1

commit 3: feature 2

commit 4: feature 1

commit 5: feature 3

commit 6: feature 4

commit 7: feature 1

È persino possibile avere una richiesta pull, che incorpora i commit 1, 2, 4 e 7 senza i commit in mezzo?

Sono a conoscenza del concetto "un ramo per ogni caratteristica", ma per il momento proviamo a impostare un processo semplice senza troppi rami, perché gli sviluppatori provengono da SVN e non hanno molta esperienza con Git .

Suggerimenti benvenuti!

Modifica Ho cercato su Google un po 'di più e probabilmente la strategia flusso GitHub potrebbe essere ciò che stiamo cercando.

    
posta Simon 06.09.2016 - 22:22
fonte

2 risposte

3

Come dice Juan Carlos, il modo più ovvio per farlo sarebbe la raccolta di ciliegie in rami separati. Questo può o meno essere banale, a seconda di quanto i commit delle diverse funzionalità sono basati l'uno sull'altro.

Puoi anche utilizzare --no-commit per unire "in modo interattivo" più volte: 1 , 2 - ma è piuttosto complicato.

Ad ogni modo, hai detto "Suggerimenti di benvenuto", quindi ...

for the moment we try to set up a simple process without too many branches

Ciò che hai descritto può sembrare concettualmente semplice da visualizzare, ma non penso che troverai un modo pratico di lavorare.

Prendiamo lo scenario in cui le funzioni 1, 2, 3 e 4 non sono del tutto correlate. Sviluppandoli tutti su un ramo, non rendi più facile la fusione molto , ma costringi gli sviluppatori a rebase costantemente mentre trovano costantemente che il capo del loro ramo development è dietro quello che vogliono per spingere a, a causa di altri sviluppatori che effettuano commit.

Ora prendiamo lo scenario in cui le quattro funzioni sono separate dal punto di vista dell'utente, ma interagiscono in qualche modo all'interno del codice. Che cosa succede se le caratteristiche 2 e 3 funzionano bene, 1 sta iniziando a diventare molto più difficile di quanto pensassi e vuoi spingerlo indietro alla prossima versione, e decidi che 4 è stato un errore. Come stai andando a isolare 2 e 3?

If a developer has finished a feature, he creates a pull request so the new feature can be reviewed and merged into production, where all the final testing and deployment takes place.

Non vedo come sarà sempre possibile - cosa succede se ha finito (2), ma ha basato alcuni dei suoi commit su una feature incompleta (1)? Sta andando a trascinare metà di un elemento incompleto con la sua richiesta di pull.

Potrebbero esserci delle difficoltà nel rispondere alla recensione, poiché una volta che la revisione è terminata, altri tre sviluppatori potrebbero aver basato il loro lavoro sul tuo comunque.

    
risposta data 07.09.2016 - 00:16
fonte
4

La richiesta Pull è per un ramo da unire in un altro. Quello che stai chiedendo non è possibile. Cosa accadrebbe agli altri commit?

Quello che fai qui è semplice scegliere i tuoi commit e creare un altro ramo, che si fonderà con il tuo principale. Avrai il resto dei tuoi commit sul tuo vecchio ramo.

Da una nota a margine, ti suggerirei di riconsiderare la tua strategia di ramificazione. È molto più facile rivedere le funzionalità singolarmente che in gruppo, in più in questo modo avrai funzionalità nel tuo ramo principale molto più velocemente. E eviterete problemi come quello in questa domanda.

    
risposta data 06.09.2016 - 23:17
fonte

Leggi altre domande sui tag