This answer mostra come è possibile ridurre un commit a una patch, ma come posso convertire una patch di mq solo in modifiche locali?Come posso convertire una patch Mercurial queue solo alle modifiche locali?
risposta
Risposta breve
Assicurarsi che il cerotto viene applicato, quindi:
hg qrefresh nothing
hg qpop --keep-changes
hg qdelete "Name of patch"
Risposta lunga
In primo luogo, è necessario assicurarsi che nessuna modifica sono tracciati dalla patch . Per fare questo, utilizzare
hg qrefresh nothing
nothing
è solo un nome di file casuale che non è nel repository. Di solito uso hg qref 0
per brevità. hg qrefresh
accetta un modello di file opzionale. Se viene fornito, la patch tiene traccia delle modifiche che corrispondono al modello e solo a quelle. Quando nulla corrisponde al modello del file, nessuna modifica verrà tracciata dalla patch e quindi ci saranno solo modifiche locali.
Ora hai una patch inutile in giro e hai alcune modifiche locali. Per pulire, è possibile fare
hg qpop --keep-changes
per inserire la patch anche se sono presenti modifiche locali. Infine, per rimuovere la patch morti, vuoti e non applicata è possibile utilizzare
hg qrm "Name of patch"
Non è possibile rimuovere una patch applicata, che è il motivo per cui è necessario il passaggio hg qpop --keep-changes
.
(Nota: hg qrm
e hg qremove
sono gli alias di hg qdelete
.)
Se si utilizza TortoiseHg
Con TortoiseHg, esportando la patch negli appunti (Workbench> tasto destro del mouse la patch> Esporta> Copia Patch), quindi lapplicazione della patch e infine l'importazione dagli Appunti con la destinazione "Directory di lavoro" sembra funzionare. Ecco alcune catture di schermo dimostrando questa procedura:
'--keep-changes' non è più un'opzione valida per' hg qpop'.Secondo 'hg help qpop', sembra' --force' è ora l'opzione che acheives quello che vogliamo qui: "-f --force dimentica eventuali modifiche locali ai file patchati" – sjbx
'hg qrefresh 0' fallisce con 'Il sistema non trova il file specificato.' L'alternativa che ho trovato (sintassi di powershell): 'hg qrefresh --exclude" $ (hg root) "'. Questo dice a MQ di escludere tutto nel repository. Per qualsiasi ragione, solo '.' non ha funzionato, e ho dovuto specificare il percorso completo (quindi,' hg root'). – moswald
@CraftyThumber Vedo ancora '--keep-changes', e AFAICT' --force' perderà le modifiche che stiamo cercando di salvare. – moswald
Un'alternativa senza dubbio più semplice:
hg qfinish qtip
hg strip -k tip
Cioè, finire la patch e quindi rimuovere il commit, pur mantenendo le sue modifiche (l'opzione -k
-strip
) risultante .
- 1. Come posso aggiungere binari completi a una patch Mercurial?
- 2. Contribuire patch da Mercurial a Git?
- 3. come eliminare le modifiche alle branch locali di git?
- 4. Generazione di patch in Mercurial
- 5. Code Mercurial: combinazione di patch
- 6. Rimozione file dalla patch Mercurial MQ
- 7. Come utilizzare Eclipse Mercurial Plugin per produrre una patch?
- 8. esportazione di patch mercurial rispetto a una vecchia revisione
- 9. Mercuriale: come posso vedere solo le modifiche introdotte da un'unione?
- 10. Come applicare una patch generata con git format-patch?
- 11. Cosa fare quando una patch per l'importazione Mercurial fallisce?
- 12. Branching SVN con modifiche locali
- 13. Come rsync alle cartelle locali da una vista Django
- 14. Come posso creare patch binari?
- 15. Git: come sovrascrivere le modifiche locali?
- 16. In Mercurial, posso unire solo alcuni file tra due rami?
- 17. Posso importare una patch senza toccare la directory di lavoro?
- 18. GitBucket: errore: Le modifiche locali alle seguenti file saranno sovrascritti da fusione
- 19. Unione di modifiche PHP con diff/patch
- 20. Come posso accedere alle variabili locali da una funzione anonima C++ 11?
- 21. Come posso diff e patch/unire stringhe invece di file?
- 22. Come inviare solo patch selezionate con git svn?
- 23. Come apportare modifiche che solo io posso vedere?
- 24. Come rendere Gitk mostra solo filiali locali?
- 25. Mercurial Fusione solo di alcuni changeset
- 26. Come annullare l'ultimo commit e mantenere le modifiche in mercurial?
- 27. Smart Git non mostra le modifiche locali
- 28. Come distribuire: database, sorgenti e modifiche binarie in 1 patch?
- 29. Spostamento di modifiche locali in un ramo
- 30. Come annullare le modifiche locali in un file specifico
Siamo spiacenti, ma mq patch ** è ** già "solo modifiche locali", AFAIK. Perché vuoi qualcosa di più? –
'Cambiamenti locali' è la terminologia Mercurial per le modifiche che non sono in un changeset o tracciate da una patch Mercurial. Ci possono essere diversi motivi per voler convertire una patch in modifiche locali. Comunque, ho avuto bisogno di farlo più volte e non ho trovato la risposta su Stack Overflow né tramite googling (ho dovuto RTFM), quindi ho condiviso la risposta quando l'ho trovata nel caso in cui gli altri volessero fare lo stesso. – Lstor