Come interrompere una fusione in Mercurial?


85

Ho inventato una fusione. Vorrei ripristinare e riprovare.
C'è un modo per annullare un'unione prima che venga commessa?

hg revertnon fa quello che vorrei, ripristina solo il testo dei file. Mercurial interrompe il mio secondo tentativo di fusione e si lamenta che l'unione originale non sia ancora stata eseguita.

C'è un modo per annullare un'unione dopo un hg mergecomando ma prima che venga eseguito il commit?


Risposte:


107

hg update -C <one of the two merge changesets>


Semplice, efficiente e, credo, il modo migliore per farlo! : D
Eric-Karl

@JonL. - Sì, --cleanè sinonimo di -C. Non sono sicuro a quale changeset .si riferirà, ma sarà sempre uno dei due changeset uniti.
Omnifarious

3
@Omnifarious, la pulizia .dovrebbe ripulirsi a qualsiasi revisione stavi eseguendo prima di iniziare l'unione. Quindi, se tu fossi a r42, hai tentato di unire con r43, fallito, pulito, saresti tornato su un r42 incontaminato.
Jon L.

2
hg update --cleanfunziona, come .sembra essere l'impostazione predefinita implicita - tuttavia non è documentato esplicitamente .
Joel Purra,

@JoelPurra: Il significato di .nel contesto di una fusione è piuttosto ambiguo.
Omnifarious

39

Dopo averlo fatto hg merge, ma prima hg commit, la tua copia di lavoro ha due genitori: il primo genitore è il changeset a cui avevi aggiornato prima dell'unione e il secondo genitore è il changeset con cui ti stai unendo. Mercurial non ti permetterà di farlo di hg mergenuovo fintanto che la tua copia di lavoro ha due genitori.

Hai due opzioni su come procedere:

  1. Se vuoi interrompere l'unione e tornare al punto di partenza, fallo

    hg update -C .
    

    Questo aggiornerà la copia di lavoro in modo che corrisponda al primo genitore: .denota sempre il primo genitore della copia di lavoro.

  2. Se vuoi unire nuovamente alcuni file, fallo

    hg resolve fileA fileB
    

    Questo riavvierà gli strumenti di unione proprio come hai fatto tu hg merge. Il comando di risoluzione è buono se scopri in hg merge-time che i tuoi strumenti di unione sono configurati male: correggi la configurazione ed esegui hg resolve --all. Puoi eseguire hg resolvetutte le volte che vuoi finché non sei soddisfatto dell'unione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.