2012-11-20 12 views
18

This answer bir yama taahhüt indirgemek nasıl gösterir, ancak nasıl yerel değişikliklerle sadece bir mq yama dönüştürebilirsiniz?Mercurial kuyruk yamalarını yerel değişikliklere nasıl dönüştürebilirim?

+0

Üzgünüm, ama mq-yama ** zaten "yerel değişiklikler", AFAIK. Neden daha fazla bir şey istiyorsun? –

+4

'Yerel değişiklikler', Mercurial bir yama tarafından değiştirilmemiş veya takip edilmeyen değişiklikler için Mercurial terminolojidir. Bir düzeltme ekini yerel değişikliklere dönüştürmek için birkaç neden olabilir. Her neyse, bunu birkaç kez yapmam gerekti ve Yığın Taşımı ya da googling (RTFM'ye) ile ilgili cevabı bulamadım, başkalarının da aynısını yapmak istediğimde bulduğumda cevabı paylaştım. – Lstor

cevap

21

Kısa cevap

emin olun yama sonra, uygulanan:

hg qrefresh nothing 
hg qpop --keep-changes 
hg qdelete "Name of patch" 

uzun yanıtı

, emin hiçbir değişiklik yama tarafından izlenir hale getirmek için ilk ihtiyaç . Bunu yapmak için,

hg qrefresh nothing 

nothing

depoda değil sadece rastgele bir dosya adıdır kullanın. Genellikle kısaltmak için hg qref 0 kullanıyorum. hg qrefresh, isteğe bağlı bir dosya desenini kabul eder. Eğer verilmişse, yama desenle eşleşen değişiklikleri izler - ve sadece bunlar. Hiçbir şey dosya deseni ile eşleşmediğinde, yama tarafından hiçbir değişiklik izlenmez ve bu nedenle yalnızca yerel değişiklikler olacaktır.

Artık etrafta yatan işe yaramayan bir yama var ve bazı yerel değişiklikleriniz var. Temizlemek için, yerel değişiklikler olsa bile düzeltme ekini

yapabilirsiniz. Son olarak, hg qpop --keep-changes adım gerekir neden

hg qrm "Name of patch" 

Sen bir uygulamalı yama, kaldıramazsınız kullanabilirsiniz ölü boş ve uygulanmamış ekini kaldırmak için.

(Not: hg qrm ve hg qremovehg qdelete ait diğer adları vardır.) Yama> Export> Kopyala sağ tıklayın panoya (Tezgahı> için yama ihracat, TortoiseHg ile

TortoiseHg kullanılarak

ise Patch), daha sonra yamayu kaldırmayarak, son olarak da panoya gelen ve "Çalışma Dizini" olan hedefin çalıştığı görülüyor. İşte bazı ekran görüntüleri bu prosedürü sergilediklerini: enter image description here

+3

'--keep-changes'' hg qpop' için artık geçerli bir seçenek değil.'Hg help qpop' ifadesine göre, '--force' şu anda burada ne istediğimizi seçen bir seçenek: "-f - yamalı dosyalarda herhangi bir yerel değişikliği unutmayı" – sjbx

+0

'hg qrefresh 0' ile başarısız 'Sistem belirtilen dosyayı bulamıyor.' Bulduğum alternatif (powershell söz dizimi): 'hg qrefresh --exclude" $ (hg root) "'. Bu, MQ'nun depodaki her şeyi hariç tutmasını söyler. Herhangi bir nedenden dolayı, sadece '' 'çalışmadı ve tam yolu belirtmek zorunda kaldım (bu nedenle,' hg root'). – moswald

+0

@CraftyThumber Hala "--keep-changes" i görüyorum ve AFAICT '--force 'kaydetmeye çalıştığımız değişiklikleri kaybedecek. – moswald

6

bir tartışmasız daha basit bir alternatif:

olduğunu
hg qfinish qtip 
hg strip -k tip 

, (strip için -k seçeneği) çıkan onun değişiklikleri koruyarak taahhüt kaldırmak sonra yama bitirip .

İlgili konular