ramo mercuriale o rebase?

7

Dopo aver usato quotidianamente mercurial per oltre un anno, stiamo per trovare un flusso di lavoro migliore per il nostro DVCS. Ispirato da successo con un modello di branching Git stiamo per allontanarci dal nostro "lavoro giornaliero push" nel master repo e sborsare rami di rilascio a intervalli regolari "workflow into" lavorare su rami di feature separati e riunire le feature finite nel master ".

Ad ogni modo, il problema che ho avuto con la ramificazione e l'unione in mercurial (ramo usando clone) è l'effettivo processo di unione. Non ho alcun problema con le unioni che generano ulteriori changeset, il problema che ho è che di solito genera enormi changeset che contengono più modifiche rispetto al changeset originale + merges. Il changeset di fusione contiene anche changeset di altre teste pure.

Quindi mi sono reso conto di recente che quando eseguiamo il pull dal master repo, quindi l'aggiornamento / fusione e infine il push, creiamo questi grandi set di modifiche non necessari.

Quello che dovremmo fare è rebase invece di pull, update / merge.

Ora rebase era originariamente un'estensione di mercurial, è ancora un'estensione, ma è attualmente distribuita insieme alla distribuzione mercuriale.

Quando segui altri thread, specialmente quelli confrontando git con mercurial , sembra una delle maggiori differenze tra i due è il fatto che git non supporta i rami, ma ha il supporto nativo per rebase. Mercurial non ha supporto nativo per rebase ma supporta i rami.

Quindi la mia domanda quindi, se dovessimo adottare un flusso di lavoro più flessibile usando i rami di caratteristiche, dobbiamo avere un flusso di lavoro solido / fusione che non causi il caos nel ramo principale. Il ramo principale dovrebbe essere peach contenente solo changeset contenenti una singola funzione senza alcun changeset aggiuntivo per le operazioni di unione eseguite. Ora può essere fatto in mercurial senza il supporto di rebase?

Come questione a parte, vorrei inserire alcuni suggerimenti su come aggregare più changeset in un ramo di funzionalità in un singolo changeset quando si inserisce il ramo principale.

Ho letto Una guida alla ramificazione in Mercurial ma non menziona mai i pro o i contro per quanto riguarda la facilità di fusione, o più specificamente, come i risultati della fusione vengono commessi nel ramo principale.

    
posta Ernelli 10.06.2011 - 11:10
fonte

1 risposta

5

Hai preso in considerazione l'utilizzo di rami nominati per i tuoi rami di funzionalità? In questo modo puoi sviluppare una funzione impegnandoti a farlo tutte le volte che vuoi, mentre il ramo principale non è inquinato da questi commit. Quando una funzione è pronta, unisci il ramo della funzione corrispondente nel tuo ramo principale. Ciò produrrà un changeset di unione che contiene solo la differenza tra il ramo della caratteristica e il ramo principale. Quando abbiamo iniziato a utilizzare Mercuial, abbiamo anche utilizzato un flusso di lavoro in cui abbiamo separato lo sviluppo di feature esclusivamente da cloni separati. Tuttavia, dal momento che usiamo i rami del nome, la vita è diventata molto più facile per noi. I changeset sono separati in modo pulito e si possono avere tutti i rami all'interno di un repository senza confondersi. Inoltre, è possibile passare facilmente tra diversi rami. E come ho detto, ottieni una storia molto più pulita.

    
risposta data 02.07.2011 - 21:26
fonte

Leggi altre domande sui tag