Hg sürümleri arasında değişen dosyaların bir listesini oluşturma


118

Mercurial'de belirli bir dizindeki iki revizyon arasında hangi dosyaların değiştiğinin bir listesini oluşturmak istiyorum.

Özellikle neyin değiştiğiyle ilgilenmiyorum , ama o dizinde hangi dosyaların değiştiğiyle ilgileniyorum .

Örneğin, thenve arasında otherthenyalnızca 2 dosyanın değiştiğini varsayalım :

>hg hypothetical-command -r then:otherthen
foo.baz
bar.baz
>

Varsayımsal komut nedir? Farkı ve günlüğü denedim, ancak onları bunu yapmaya nasıl ikna edeceğimi bilemiyorum: ya yamayı (diff) ya da tüm depoyu (günlük) alıyorum.

Yanıtlar:


166
hg status --rev x:y

revizyon numaraları (veya etiket veya şube adları) nerede xve yistenmektedir.

Windows'ta terminal kullanıyorsanız hg status --rev x:y> your-file.txt, listeyi bir dosyaya kaydetmek için ekleyin .


3
Yalnızca geçerli dizindeki değişiklikleri görmek için:hg status --rev x:y .
Kullanıcı

14
Son revizyondaki değişiklikleri görmek için: hg status --rev .^
kunigami

8
Yalnızca dosya adlarının listesini almak için (ve değişiklik türünü belirten önek karakteri yok), ekleyin -n, yanihg status --rev x:y -n
Cheetah

1
hg status --change .değiştirilen dosyaları .- aynı listede, hg status --rev .^ancak daha doğrudan
listeler Metaxis

14

statü ihtiyacınız olan şeydir.

Ancak, "iki revizyon arasında" ile ne demek istediğinize bağlı olarak, " x :: y " (DAG - Yönlendirilmiş Asiklik Grafik) aralığını kullanmayı da düşünebilirsiniz .

Paralel değişiklik kümeleri verildiğinde,

1--2---4 \---3

hg status --rev 1:4 döndürür (1,2,3,4), yani yerel, sayısal rev'ye göre uç noktalar arasındaki ve bu noktalar dahil herhangi bir şey . Bu, diğer - ilişkili olsa da - depolarda farklı sonuçlar verebilir (ve büyük olasılıkla)!

hg status --rev 1::4yani, son noktalarını ve tüm changesets (1,2,4) dönmek soyundan '1' VE ataları '4'.

İkinci durum, x :: y, genellikle gerçek dünya uygulamalarında daha kullanışlıdır. TortoiseHg \ Visual Diff ile elde ettiğiniz şey budur.


> hg yardım geri döndürür:

"x :: y" Bir DAG aralığı, x ve y'nin kendileri de dahil olmak üzere x'in soyundan gelen ve y'nin atası olan tüm değişiklik kümeleri anlamına gelir. İlk son nokta dışarıda bırakılırsa, bu "atalara (y)" eşdeğerdir, ikincisi dışarıda bırakılırsa "alt öğeler (x)" ile eşdeğerdir.


1
Belki de cevabınızın diğerine bağımlı olmaması ve daha aptalca olmaması için komutu açıkça eklemeniz gerekir. "Evet, durum ihtiyacınız olan şeydir. Örneğin hg status --rev x::y" gibi bir şey.
PhoneixS
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.