Son SVN günlük girişlerini nasıl görüyorsunuz?


194

Yazma svn logKomut satırında inanılmaz uzun, yararsız liste tükürür. Bunun neden varsayılan olduğu hakkında hiçbir fikrim yok. Terminaldeki 300 girişi okumak istedim (hatta okuyabilseydim), yazmayı svn log --fullya da benzer bir şeyi düşünmezdim.

Belki SVN adamları bu çıktıyı başka bir programa aktarmak istediğimi düşünüyor. Ancak, durum böyleyse, terminal kullanıcısı için değil, program için daha ayrıntılı bir çağrı yapmak daha anlamlı olacaktır.

Her neyse, nelerin değiştiğini görmek için son 5 veya 10 giriş gibi son zamanlarda yapılan bazı etkinlikleri nasıl görebilirim?


9
Evet, gerçekten böyle olmalı git log.
Paul Draper

Yanıtlar:


262

limit seçenek, ör .:

svn log --limit 4

svn log -l 4

Sadece son 4 giriş


127

Bert F'nin söylediklerinin yanı sıra log, -r(veya --revision) seçeneği de dahil olmak üzere birçok komut var . Revizyon aralıklarını göstermek için bu seçeneği kullanan bazı pratik örnekler şunlardır:

Her şeyi artan sırada listelemek için:

svn log -r 1:HEAD

Her şeyi azalan sırada listelemek için:

svn log -r HEAD:1

Onüçüncüden şu anda kullanıma alınmış revizyonun tabanına kadar her şeyi artan sırada listelemek için:

svn log -r 13:BASE

Verilen tarihler arasında her şeyi almak için:

svn log -r {2011-02-02}:{2011-02-03}

Yukarıdaki tüm ifadeleri --limitseçenekle birleştirebilirsiniz , böylece yazdırılanlar üzerinde oldukça ayrıntılı bir kontrole sahip olabilirsiniz. Bu -rifadeler hakkında daha fazla bilgi için Subversion ile Sürüm Denetimisvn help log kitabındaki ilgili bölüme bakın.


8
Bu açıklama için çok teşekkürler, @Daniel Dinnyes - Genellikle OP'nin tam tersi problemim var: svn log .benim için sadece en eski revizyonu döndürebilir (aynı şekilde svn log --limit 4 .); ama ararsam svn log -r HEAD:1 ., o zaman sonunda tüm girişleri alırım ... Tekrar teşekkürler - şerefe!
sdaau

Bu, svn log yalnızca geçerli yolun değişiklik geçmişini gösterdiği için daha iyidir .
Ninja

41

-vAyrıntılı mod için kullanmayı seviyorum .
Size taahhüt kimliği, yorumlar ve etkilenen tüm dosyaları verecektir.

svn log -v --limit 4

Çıktı örneği:

I added some migrations and deleted a test xml file
------------------------------------------------------------------------
r58687 | mr_x | 2012-04-02 15:31:31 +0200 (Mon, 02 Apr 2012) | 1 line Changed
paths: 
A /trunk/java/App/src/database/support    
A /trunk/java/App/src/database/support/MIGRATE    
A /trunk/java/App/src/database/support/MIGRATE/remove_device.sql
D /trunk/java/App/src/code/test.xml

2
Ayrıntılı seçenek son derece kullanışlıdır
Jason George

Ve dev-ekibi gerçekten tatlıysa, svn yorumuna sorun kimliğini koyuyorlar ve taahhütle ilgili sorunu kolayca bulabilirsiniz.
Jonas Söderström

11

Çıkışı içinden lessveya başka bir çağrı cihazına bağlayın:

svn log | less

1
> 23k revizyonunuz varsa, ilk girişleri (ve ayrıntılı günlük kullanmadığınızda) görmek için yine de ~ 20 saniye bekleyeceksiniz. Ama güzel - en sonuncuyu en üstte gösterir. Ve TortoiseSVN'in bir seferde 100 sayfalama işleminden daha iyi! Geriye gitmek istediğinizde.
Tomasz Gandor

6

Herhangi birinin bu eski soruya bakması durumunda, son güncellemenizden bu yana değişiklikleri görmek için kullanışlı bir komut:

svn log -r $(svn info | grep Revision | cut -f 2 -d ' '):HEAD -v

LE (yorum için Gary teşekkürler)
aynı şey, ama çok daha kısa ve daha mantıklı:

svn log -r BASE:HEAD -v


8
ya da sadecesvn log -r BASE:HEAD -v
Gary

5

Başkalarının söylediklerine eklemek için, .bashrc veya .bash_aliases dosyanızda bir takma ad da oluşturabilirsiniz:

alias svnlog='svn log -l 30 | less'

veya varsayılan olarak ne istersen


4

Daha önce fark ettiğiniz gibi svn logkomut herhangi bir argüman olmadan çalıştırıldı Belirttiğiniz URL veya komutu çalıştırdığınız çalışan kopya klasörü ile ilgili tüm günlük mesajlarını gösterir .

svn logSonuçları her zaman hassaslaştırabilir / sınırlandırabilirsiniz :

  • svn log --limit NUM yalnızca ilk düzeltme sayısını gösterir,
  • svn log --revision REV1(:REV2) REV1 revizyonu veya REV1 - REV2 aralığı için günlük mesajını gösterecektir,
  • svn log --searchbelirttiğiniz arama modeliyle eşleşen düzeltmeleri gösterir (komut Subversion 1.8 ve daha yeni istemcilerde kullanılabilir). İle arama yapabilirsiniz
    • revizyonun yazarı (örn. kullanıcı adını taahhüt eder),
    • revizyonun yapıldığı tarih,
    • revizyon yorumu metni (günlük mesajı),
    • gözden geçirilen yolların listesi değiştirildi.

4

Bu cevap Subversion alt komut seçenekleri ile ilgili diğer sorulara yöneliktir. Kullanılabilir her alt komut için (örn. Ekle, günlüğe kaydet, durum ...), --helpalt komutunuzla kullanabileceğiniz mevcut seçeneklerin tam listesini görüntüleme ve bunların nasıl kullanılacağına ilişkin örnekler ekleyebilirsiniz. Aşağıdaki snippet doğrudan svn log --help"örnekler" bölümü altındaki komut çıkışından alınır :

Show the latest 5 log messages for the current working copy
directory and display paths changed in each commit:
  svn log -l 5 -v

3

Ancak svn günlüğü hala ters sıradadır, yani en son girişler önce çıkış yapılır, terminalimin üstünden aşağı kaydırılır ve gider. Son girişleri gerçekten görmek istiyorum , yani sıralama düzeni kronolojik olmalıdır. Bunu yapan tek komut gibi görünüyor, svn log -r 1:HEADancak yaklaşık 10000 girişli bir depoda çok uzun sürüyor. Ben bu kadar geldim:

Son 10 altyazı girişini kronolojik sırada görüntüleyin:

svn log -r $(svn log -l 10 | grep '^r[0-9]* ' | tail -1 | cut -f1 -d" "):HEAD
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.