Domanda

Nella nostra configurazione del progetto Mercurial abbiamo 3 filiali in un unico repository. Uno è un ramo di release stabile in cui sono fatte le correzioni di bug urgenti, uno è un ramo di caratteristica che contiene il nuovo codice funzione e uno è un ramo SVS in cui entrambe le correzioni di bug e nuove caratteristiche sono fuse in di fornire la più base di codice up-to-date .

Abbiamo unito un intero carico di nuovo codice caratteristica nel ramo SVS senza problemi a tutti. Dopo che ci siamo fusi nel ramo stabile con le correzioni di bug nel ramo SVS, ma questo sembra avere l'effetto di eliminare il nuovo codice funzione. Ho scoperto che questo problema è stato causato da qualcuno la fusione SVS in una stalla tempo fa (che avrebbe dovuto mai successo !!). Ora, quando si tenta di unire le correzioni di bug in SVS elimina tutto il nuovo codice funzione.

C'è un modo di rimuovere gli effetti della fusione da SVS in stabile, pur mantenendo le correzioni di bug che sono discendenti dopo questo 'unione sbagliata'? Ho provato Ritirare l'unione, ma non sembra avere alcun effetto a tutti. Posso fare una striscia e aggiungere nuovamente i gruppi di modifiche richieste nel?

Grazie in anticipo.

È stato utile?

Soluzione

In realtà ho riuscito a risolvere questo uno io attraverso un po 'di tentativi ed errori.

Per prima cosa è necessario abilitare il trapianto e le estensioni mqMerge nel file mercurial.ini. Aggiungere le righe seguenti righe sotto l'intestazione estensione

   transplant=
   mq=

clonare un repository in una nuova posizione. Nella tua nuova pronti contro termine, rimuovere l'unione sbagliata utilizzando il comando strip alla storia chiaro l'effetto della unione sbagliata viene rimosso. (Attenzione che questo rimuoverà tutti i gruppi di modifiche discendenti)

Quindi è necessario cherrypick tutti i gruppi di modifiche necessarie in ordine cronologico dagli altri repo utilizzando un comando simile al seguente

    hg transplant -s "otherRepo" -b "branchName" "changesetHexNumber"

Ripetere il comando trapianto per tutti i gruppi di modifiche richieste. Ouila!

. NB: Se si utilizza un repository centrale è necessario mettere a nudo l'offendere fusione / changset anche lì, altrimenti il ??tuo repo locale vi pensi di avere di modifiche in sospeso per tirare

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