best practice in mercurial: branch vs. clone e partial merges?


0 Answers

Per la domanda 1, è necessario essere un po 'più chiari su cosa intendi per "cambiamenti". Quale di questi intendi:

  1. "Voglio tirare alcuni, ma non tutti, dei changeset in un ramo diverso in questo."
  2. "Voglio estrarre l'ultima versione di alcuni, ma non tutti, i file in un ramo diverso in questo."

Se intendi l'articolo 1, dovresti esaminare l'estensione del Transplant , in particolare l'idea di criptare un paio di changeset.

Se intendi l'elemento 2, dovresti fare quanto segue:

  • Aggiorna al ramo in cui vuoi inserire le modifiche.
  • Utilizzare hg revert -r <branch you want to merge> --include <files to update> per modificare il contenuto di tali file nel modo in cui si trovano sull'altro ramo.
  • Usa hg commit per confermare le modifiche al ramo come un nuovo changeset.

Per quanto riguarda la domanda 2, non uso mai i cloni del repository per ramificarmi da solo, quindi non lo so. Uso rami nominati o rami anonimi (a volte con segnalibri).

Question

... quindi mi sono abituato a cose semplici con Mercurial ( add , commit , diff ) e ho scoperto il file .hgignore (yay!) e ho imparato a creare e passare da un branch all'altro ( branch , update -C ).

Ho due domande principali però:

  1. Se sono nel ramo "Branch1" e voglio inserire alcune ma non tutte le modifiche dal ramo "Branch2", come dovrei farlo? In particolare se tutte le modifiche sono in una sottodirectory. (Suppongo che potrei clonare l'intero repository, quindi usare uno strumento di unione delle directory come Beyond Compare per scegliere e scegliere le mie modifiche. Sembra che ci dovrebbe essere un modo per isolare semplicemente le modifiche in un file o in una directory, però).

  2. Passare da un ramo update -C con l' update -C sembra così facile, mi chiedo perché mi prendo la briga di usare il clone . Posso solo pensare ad alcuni motivi (vedi sotto) - ci sono altri motivi per cui mi manchi?

    un. se ho bisogno di agire su due versioni / rami contemporaneamente (ad esempio, una differenza metrica delle prestazioni)

    b. per un backup ( clone il repository su un'unità di rete in una posizione fisicamente diversa)

    c. per fare la scelta e scegliere unire come ho menzionato sopra.






Related