2010-09-24 23 views
76

Belirli bir değişiklik kümesinde değiştirilen tüm dosyaları nasıl belirlersiniz?Mercurial - bir değişiklik kümesinde değiştirilen tüm dosyalar?

Bu durumda bir değişiklik aramıyorum, sadece ekleme/kaldırma/değiştirme listesi.

hg log -vprX, diffs'nin bir listesini yapar, ancak sadece dosyaları istiyorum. Eğer şu

hg status --change REV 
+0

Bu cevaplardan birinin aslında soruya cevap verdiğini sanıyorum :) –

cevap

120

dosyaların listesi. -p, gösteri yaması anlamına gelir. Çıktınızı zevkinize göre biçimlendirmek için bir template kullanabilirsiniz.

+7

+1, ancak OP muhtemelen '-n'/'--no-status 'bayrağı da istiyor. –

+2

Kolay kopyalama için: 'hg status --no-status --change REV' – FriendlyGuy

+0

+1 Bu, yazdığım' hg status --rev REV ~ 1: REV'den çok daha kolay yazılır. –

15

Sadece gösterecek olan hg log -vpr den p kaldırmak revizyon REV dosyalarda değişiklik listesini verir "durum komutu" kullanarak olmalıdır sonra değişmiş olan dosyaları listelemek istiyorsanız

+3

Aşağıdaki şablona ihtiyacınız olacağını düşünüyorum: --template 'files: {files} \ n' –

+1

{files}, -v bayrağı varsayılan şablonunun – eskhool

+2

hg log -r'nin parçası olduğuna inanıyorum. --template '{join (files, "\ n")}', dosyalara yeni satır ayırmak için – Foxichu

9

Ben soru tek Changeset için olduğunu biliyorum ama sen changesets aralığı için modifiye tüm dosyaları almak istiyorsanız, benzer Googling aracılığıyla

hg status --rev 1 --rev 10 -m 
+2

Kötü kötü. Aralıklı olarak değiştirilen dosyalar, "gg log -r BEGIN: END --template" {files} \ n "' @ geoffrey-zheng ve @ton yazdı ** iki yıl önce !!! ** –

+0

Bunun için üzgünüm. Cevabın tek değişiklik için olduğu farz edildi. –

+0

Gerçi, belki de en iyisi olmasa da, işe yarıyor;) –

1

Bulunan bu soruyu yapabilir kavramı. için

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", size her Değişiklik listesi değiştirilebilir veya ilave her dosyanın bir listesini göstermek dan [rev başlat] olacaktır: changesets bir aralığında aracılığıyla değiştirilen tüm dosyaları göstermek için, kadar kolay [rev rev], her değişiklik dosyasında yeni bir satırda. Değiştirilmiş, eklenmiş veya kaldırılmış tüm dosyaları göstermek için {file_mods}{file_adds}'u {files} ile değiştirin.
  2. sed -e 's/ /\n/g' ayrı satırlara göstermek için tüm dosyaları bölmek ve
  3. uniq çiftleri-dosyaları kaldırmak için listeye filtre edecek misin onları uniq listeyi filtreleyebilirsiniz için
  4. sort, er, listeyi sıralamak olacak Birden fazla revizyonda değişti.
+0

Bu çözüm, en son eklenen ilk dosya ile birlikte değiştirilir. Ayrıca, dosya isimlerindeki boşluklarla düzgün bir şekilde ilgilenmez. Bu eksikliklere sahip bir '--template' tabanlı çözüm, @Foxichu tarafından önerildiği gibi 'join() 'kullanılarak oluşturulabilir. –

-1

Çoğu dükkan gibi iseniz, değişiklikleri izlemek için bir bilet sistemi kullanın. Eğer bilet numarasını bilmek ve bu bilet ile ilgili tüm kaydedilmesini bulmak istiyorsanız (eğer taahhüt mesajında ​​bilet numarası da varsayarak), kullanabilirsiniz:

hg log -k TICKET_NUMBER 

Bu ilişkili tüm revizyonları görüntüleniyor bilet. Ancak, dosyaları listelemez. Düzeltmelerle ilişkili dosyaların listesini almak için yukarıdaki cevaplardan birini kullanabilirsiniz.

daha basit olsa da, daha önceki cevaplardan bilgi birleştirerek, sen kaydedilmesini aramak için aşağıdaki yapabileceğini yapmak için, dahil dosyalar değiştirildi:

hg log -vk TICKET_NUMBER 
+0

Genel olarak, iyi bir fikir, ancak bu soruyla ilgisiz. –

+0

Bu, soruyla ilgilidir. Poster, bir değişiklik kümesinde dosyaların nasıl alınacağını sordu. Changesets genellikle biletlerle ilgilidir. Çözümüm, bir biletle ilişkili olan değişikliklerle ilgili dosyaların nasıl alınacağını gösterir. – iDimensionz

0

Bu soru eski bir soru olduğunu biliyorum ve ben m hiç kimse sadece değiştirilmiş kod formu önerdi. Ben sadece hg log -v koşarak değiştirilmiş/eklenmiş/kaldırılmış dosyaları (hangi etiketli değil) bir listesini aldım. Ya da son 5 işleminde (repo'ya henüz başlamadığım gibi) değiştirilmiş/eklenmiş/kaldırılmış dosyaları görmek için aslında hg log -v -l5'a ihtiyacım vardı.

+0

"kimse sadece değiştirilmiş kod formu OP teklif etti" - @Geoffrey Zheng, soru yayınlandıktan yaklaşık 1 saat sonra yaptı –

İlgili konular