Belirli bir değişiklik kümesinde değişen tüm dosyaları nasıl belirleyebilirsin?
Bu durumda bir fark aramıyorum, sadece ekleme / kaldırma / değişiklik listesi.
hg log -vprX
bir fark listesi yapar ama ben sadece dosyaları istiyorum.
Belirli bir değişiklik kümesinde değişen tüm dosyaları nasıl belirleyebilirsin?
Bu durumda bir fark aramıyorum, sadece ekleme / kaldırma / değişiklik listesi.
hg log -vprX
bir fark listesi yapar ama ben sadece dosyaları istiyorum.
Yanıtlar:
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
-n
/ --no-status
işaretini de istiyor .
hg status --no-status --change REV
hg status --rev REV~1:REV
yaptığımdan çok daha kolay .
hg status --change .
Sadece p
sizin listenizden kaldırılacak hg log -vpr
dosya listesi gösterilir. -p
yamayı göster anlamına gelir. Çıktıyı zevkinize göre biçimlendirmek için bir şablon da kullanabilirsiniz .
hg status --change .
daha iyi çalıştı ve bir dosya eylemi öneki (A \ M \ D vb.) ve daha iyi göreceli yol verdi
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
hg log -r BEGIN:END --template "{files}\n"
@ geoffrey-zheng ve @ton'un iki yıl önce
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. -m
bayrak 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 -a
ve -r
bayraklar vardır; 5. Eğer kişi durum önekini istemezse, -n
onu bastıran bir seçenek vardır .
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
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.sed -e 's/ /\n/g'
tüm dosyaları ayrı satırlarda gösterilecek şekilde böler vesort
listeyi sizin için sıralayacağız, böylece listeyi uniq ile filtreleyebilirizuniq
birden fazla revizyonda değişen dosyalar olan kopyaları kaldırmak için listeyi filtreleyecektir.--template
, bu eksiklikler olmadan A tabanlı bir çözüm join()
oluşturulabilir.
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 -l5
son 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).
Ç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