2013-04-17 29 views
9

hg qnew numaralı belgeyi, düzeltme ekinde herhangi bir değişiklik içermediğini fark etmeden yayınladım. Bunu geri yüklemek ve sadece hg qrecord kullanarak belirli değişiklikleri yapmak istiyorum. qnew nasıl geri alabilirim? Eğer biliyorsanız"hg qnew" nasıl geri alınır?

hg qpop 
hg import --no-commit .hg/patches/patch-name 
hg qdelete patch-name 

, daha iyi bir yol ekleyin:

cevap

12
Cevabınız kesinlikle çalışır

- yeni Mercurial en ile size ithalat adımını kaçınmakla hg strip --keep kullanabilirsiniz:

$ hg strip --keep . 
$ hg qdelete patch-name 

--keep bayrağı, çalışırken çalışırken kopyayı çalışma kopyalarından yok sayar, yani (hg qpop yapacağı gibi) bu işlemi siler, ancak dosyalardaki değişiklikleri geri almaz . Soyulduktan sonra dizinizde hala yama var (uygulanmadı) ve daha sonra silebilirsiniz. Sadece son qnew istinat tüm yerel değişiklikleri geri almak isterseniz

2

Bir anwer here buldum.

Güncelleme

: Başka bir yolu Aldo cevap dayanarak vardır:

hg qnew test 
# We can undo the above qnew as: 
hg qrefresh -X '*' 
hg qpop -f 
hg qdelete test 
2

, tek seçenektir: Sadece rastgele bir dizedir

qcrefresh 123 
hg qpop -f 
hg qdelete <name of the patch> 

Bildirim 123 o: Yalnızca dahil (umarım nonexistsnt mercurial anlatıyorsun Geçerli yamada 123 dosya. Mercurial'in daha yeni sürümleri Yayımlandığınızda, 123 dosyasının bulunmadığına dair bir uyarı çıkacaktır, ancak bu tam olarak burada istediğimiz şeydir. Geçerli yolundaki bazı değişiklikleri korumak istiyorsanız

, grafiksel geçerli yama dahil edilecek değişiklikleri seçmenize olanak verir crecordextension gelen qcrefresh komutunu kullanabilirsiniz. Sen, Bitbucket onu download arşiv ayıklamak ve .hgrc bunu yapılandırmanız gerekir:

[extensions] 
crecord = <path/to/crecord/package> 
+0

Bu eklenti çok umut verici görünüyor ve bir Darcs kullanıcı olarak ben etkileşimli değişiklikleri seçerek bu yolu gibi. Ancak, soruma cevap vermiyor - Şimdiye kadar gerçekleşmiş olan qnew'i geri almam gerekiyordu. –

+0

Sorunuzu iyi anlıyorsam, aslında 'qnew''i geri almanız gerekmez: dahil edilmemesi gereken değişiklikleri dışlamak için doğrudan' qcrefresh' komutunu kullanabilirsiniz. Hariç tutulan değişiklikler yerel değişiklikler olarak kalacaktır, bu nedenle qcrefresh'ten sonra bunları "qnew" ile yeni bir yama ekleyebilir veya yalnızca bir alt kümesini seçmek için "qcrecord" kullanabilirsiniz. – Aldo

+0

Belki de sadece uzantıyı nasıl kullanacağımı anlamıyorum. Değiştirilmiş bir havuzda 'hg qnew' ile başlayan bir dizi komut ekleyebilir misiniz, 'qnew' hiç çağrılmadı mı? Bunu daha önce "qrefresh" kullanarak denedim (ki bu da "qcrefresh" ile aynı şeyi yapıyor, sadece etkileşimli değil), ama başarılı olmadan. –

İlgili konular