Domanda

Ho lavorato con Mercurial Now per un po 'di tempo.Quando si effettuano (privati) cambiano in un software di terze parti, in passato ho sempre creato un ramo di nome separato per queste modifiche.Quando si aggiorna il codice upstream, lo sto semplicemente unendo nel mio ramo di nome.

Oggi ho letto circa mq (code mercurial - capitoli 12 e 13 ).Penso di aver capito il concetto dietro MQ, quindi la mia domanda è:

C'è qualche vantaggio dei rami mq oltre (denominati) in Mercurial (per il mio scenario)?

È stato utile?

Soluzione

Il principale vantaggio di MQ sui rami con nome è:

    .
  • Puoi rivedere le patch. Questo ti consente di modificare la cronologia e in modo da poter mantenere una serie pulita e logica di patch in cima al codice a monte: se si nota un errore in una patch si aggiorna la patch anziché fare un nuovo commit.

    Le modifiche nelle tue patch saranno separate in modo pulito dalle modifiche apportate a monte. Quando fondi due rami, mescoli i due flussi di sviluppo. Ciò rende difficile vedere le modifiche apportate senza anche vedere le modifiche arrivando dal ramo a monte.

  • I nomi delle patch sono transitori. Quando hg qfinish una patch applicata, non c'è traccia del nome della patch rimasta nel commit. Quindi puoi usare MQ senza coordinare prima con il repository a monte poiché non avverteranno mai MQ.

  • Si evita i fusioni. Invece di fusione con il codice più recente da Upstream, Rebase Le tue patch applicate. Questo ti dà una storia più semplice. La storia è ovviamente finta dal momento che fai finta di fare tutte le tue patch dopo vedere il codice da Upstream - quando infatti lo hai effettuato in parallelo con a monte e successivamente spostato le tue patch a la punta di a monte.

  • Non hai il nome di ramo permanente nei changet. Le persone a volte Trattare i rami nominati come monouso e diventano sconvolti quando si rendono conto che un nome un nome il ramo è fissato nella storia. (È possibile impostare effettivamente il nome del ramo con hg branch prima di spingere le patch, quindi questo punto non è così cattivo.)

    Svantaggi di MQ sono:

      .
    • È uno strumento extra per imparare. È potente, ma ti dà anche più opportunità di spararti ai piedi. L'esecuzione di hg qdelete verrà davvero Elimina la patch e quindi puoi buttare via i dati. (Penso che questo va bene, ma abbiamo avuto un utente git che viene alla nostra mailinglist lamentarsi di questo.)

    • La rendi molto più difficile collaborare con gli altri. You Can Attiva .hg/patches in un repository e Push / Pull Patch in giro tra i repository ma è difficile farlo se sei più di un singolo sviluppatore. Il problema è che finisci per un fusione di patch se più di una persona aggiorna la stessa patch.

    • Non hai il nome di ramo permanente nei changet. Se stai usando i rami denominati a destra e usano i nomi di rami stabili, a lungo termine, quindi ti mancherà quando usi MQ.

Altri suggerimenti

Buona domanda.Dipende.Personalmente non mi piace il sistema di ramificazione mercuriale e cerco di evitarlo quando posso (utilizzando i segnalibri spinti anziché il ramo).

MQ è un grande strumento, con grande potere e grandi insidie.Puoi anche considerare di usare pbranch .

MQ è un ottimo strumento Se è necessario produrre e mantenere un patch-set per un progetto, qualcosa come l'aggiunta di funzione-X a un progetto e di tenere le patch aggiornate con il codice upstream.

Segnalibri (o rami se ti piace) sono buoni per un'attività di sviluppo breve che richiede di essere fusa nel codice a monte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top