Mercurial - bir değişiklik kümesinde değişen tüm dosyalar?


Yanıtlar:


150

Yalnızca değişen dosyaları listelemek istiyorsanız, "durum komutunu" kullanmanız gerekir. Aşağıda, revizyon REV'de dosyalarda yapılan değişiklikler listelenecektir.

hg status --change REV

14
+1, ancak OP muhtemelen -n/ --no-statusişaretini de istiyor .
Niall C.

7
Kolay kopyalama için:hg status --no-status --change REV
zastrowm

+1 Bunu yazmak eskiden hg status --rev REV~1:REVyaptığımdan çok daha kolay .
Patrick Oscity

3
"." mevcut REV için. anlam -hg status --change .
zaxy78

16

Sadece psizin listenizden kaldırılacak hg log -vprdosya listesi gösterilir. -pyamayı göster anlamına gelir. Çıktıyı zevkinize göre biçimlendirmek için bir şablon da kullanabilirsiniz .


3
Sanırım şu şablona ihtiyacınız olacak: --template 'files: {files} \ n'
Ton Plomp

1
{Files} 'in -v bayrağı varsayılan şablonunun bir parçası olduğuna inanıyorum
eskhool

2
hg günlüğü -r. - dosyaları ayırmak için '{birleştirme (dosyalar, "\ n")}'
şablonu

1
@Foxichu yorumu benim için çalıştı, ancak biraz huysuzdu. aslında üst cevap - hg status --change .daha iyi çalıştı ve bir dosya eylemi öneki (A \ M \ D vb.) ve daha iyi göreceli yol verdi
zaxy78

13

Sorunun tek bir değişiklik kümesi için olduğunu biliyorum, ancak bir dizi değişiklik kümesi için değiştirilen tüm dosyaları almak isterseniz, şunları yapabilirsiniz:

hg status --rev 1 --rev 10 -m

2
Çok kötü. Aralıkta değiştirilen dosyalar, hg log -r BEGIN:END --template "{files}\n"@ geoffrey-zheng ve @ton'un iki yıl önce
Lazy Badger

Bunun için üzgünüm. Yanıtlarının tek değişiklik seti için olduğu varsayıldı.
Nick DeVore

1
Bence bu cevap o kadar da kötü değil. hg status --rev BEGIN --rev ENDşudur: 1. Hatırlaması daha kolay hg log -r BEGIN:END --template "{files}\n"; 2. Dosyaları sed(@Eric Lawler) veya join()(@Foxichu) kullanmadan ayrı satırlarda yazdırır ; 3. -mbayrak olmadan, yalnızca değiştirilmiş değil, aynı zamanda eklenen ve kaldırılmış dosyaları da görüntüler (güzel standart renklendirme burada da geçerlidir); 4. Farklı filtrelemeye izin veren -ave -rbayraklar vardır; 5. Eğer kişi durum önekini istemezse, -nonu bastıran bir seçenek vardır .
Michał Wróbel

10

Mevcut Taahhütlü Revizyon

hg status --change .

.tıpkı şimdiki rev için kısaltmadır @HEADGit'te

Mevcut Taahhüt Edilmemiş Düzeltme

hg status

Keyfi Taahhütlü Revizyon

hg status --change REV_ID

1
en basit ve doğru cevap!
zaxy78

2

Benzer bir kavram için Google'da bu soruyu buldum. Bir dizi değişiklik kümesiyle değişen tüm dosyaları göstermek şu kadar kolaydır:

hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n" | sed -e 's/ /\n/g' | sort -d | uniq
  1. hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n"[rev başlangıç] ile [bitiş rev] arasındaki her değişiklik kümesinde değiştirilen veya eklenen her dosyanın bir listesini, her değişiklik kümesinin dosyaları yeni bir satırda gösterecektir. Değiştirilen , eklenen veya kaldırılan tüm dosyaları göstermek için {file_mods}{file_adds}ile {files}değiştirin.
  2. sed -e 's/ /\n/g' tüm dosyaları ayrı satırlarda gösterilecek şekilde böler ve
  3. sort listeyi sizin için sıralayacağız, böylece listeyi uniq ile filtreleyebiliriz
  4. uniq birden fazla revizyonda değişen dosyalar olan kopyaları kaldırmak için listeyi filtreleyecektir.

Bu çözüm, son değiştirileni ilk eklenen dosyayla birbirine yapıştırır. Ayrıca, dosya adlarındaki boşluklarla doğru şekilde ilgilenmez. @ Foxichu'nun önerdiği gibi --template, bu eksiklikler olmadan A tabanlı bir çözüm join()oluşturulabilir.
Michał Wróbel

1

Bu sorunun eski bir soru olduğunu biliyorum ve kimsenin sadece değiştirilmiş kod OP formunu teklif etmesine şaşırdım. Sadece çalıştırarak değiştirilmiş / eklenmiş / kaldırılmış dosyaların bir listesini aldım (ancak etiketli değil) hg log -v. Veya hg log -v -l5son 5 işlemde değiştirilen / eklenen / kaldırılan dosyaları görmek için gerçekten ihtiyacım olan şey (henüz depoya göndermediğim olanlar dahil).


"kimse değiştirilmiş kod formu OP teklif etmedi" - @Geoffrey Zheng, soru gönderildikten ~ 1 saat sonra tam olarak bunu yaptı
Michał Wróbel

-2

Çoğu mağaza gibiyseniz, değişiklikleri izlemek için bir bilet sistemi kullanırsınız. Bilet numarasını biliyorsanız ve bu biletle ilişkili tüm taahhütleri bulmak istiyorsanız (taahhüt mesajına bilet numarasını eklediğiniz varsayılarak), şunları kullanabilirsiniz:

hg log -k TICKET_NUMBER

Bu, biletle ilgili tüm revizyonları gösterir. Ancak, dosyaları listelemez. Düzeltmelerle ilişkili dosyaların listesini almak için yukarıdaki yanıtlardan birini kullanabilirsiniz.

Daha basit hale getirmek için, önceki cevaplardan gelen bilgileri birleştirerek, değiştirilen dosyalar da dahil olmak üzere kaydetme aramak için şunları yapabilirsiniz:

hg log -vk TICKET_NUMBER

Bu soru ile ilgili. Poster, bir değişiklik kümesindeki dosyaların nasıl alınacağını sordu. Değişiklik kümeleri genellikle biletlerle ilgilidir. Çözümüm, bir biletle ilişkili değişiklik kümeleriyle ilgili dosyaların nasıl alınacağını gösteriyor.
iDimensionz
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.