2011-12-15 8 views
9

Normalmente, Mercurial abortire se ho una copia di lavoro sporco quando si tenta di importare una patch:Posso importare una patch senza toccare la directory di lavoro?

$ hg import x.patch 
abort: outstanding uncommitted changes 

E 'possibile importarlo in ogni caso?

+0

Per quelli che si stanno chiedendo cosa sia appena successo ... :-) Ho risposto alla [stessa domanda sulla mailing list] (http://mercurial.markmail.org/thread/pdzc5jada7exbk66) e ho pensato che avrei provato " importando "la domanda e la risposta qui. Rispetto alla mailing list, possiamo riformulare qui le cose in modo da avere una domanda chiara e una risposta chiara. Questo potrebbe salvarci una domanda dopo. Ovviamente è un doppio lavoro "ripubblicare" cose del genere e non so davvero se ne valga la pena. –

+0

Penso che sia una buona idea. Ho già avuto questo problema e penso che gli altri lo faranno, dal momento che SO è ben referenziato sul motore di ricerca, la risposta sarà disponibile per il maggior numero possibile di persone! – krtek

+0

@krtek: grazie per il commento - mi è sembrato strano scrivere e rispondere a una domanda del genere :-) –

risposta

10

Con Mercurial 1.9, è possibile utilizzare hg import --bypass per applicare una patch senza toccare la copia di lavoro. La patch verrà applicata alla revisione padre della copia di lavoro per impostazione predefinita. Utilizzare il flag --exact per applicare la patch sul changeset indicato nell'intestazione della patch.

1

Se si utilizza TortoiseHg, è possibile utilizzare Repository > Import, quindi specificare che il cerotto deve essere importato in Shelf e, infine, nello scaffale, spostare le modifiche al repository di lavoro sporco, come si farebbe con qualsiasi altro cerotto accantonato.

Mi piacerebbe essere in grado di fare clic destro> "copia patch" in un repository di origine, quindi in un repository clonato, fare clic destro e "incollare patch", si spera che questa funzionalità sarà implementata in una versione futura.