Bagaimana Anda melihat entri log SVN terbaru?

194

Mengetik svn logmeludah daftar yang sangat panjang, tidak berguna di baris perintah. Saya tidak tahu mengapa itu default. Jika saya ingin membaca (atau bahkan bisa membaca) 300 entri di terminal, saya tidak akan keberatan mengetik svn log --fullatau yang serupa.

Mungkin orang-orang SVN berpikir saya ingin memberi makan output itu ke program lain. Namun, jika itu masalahnya, akan lebih masuk akal untuk memiliki lebih banyak panggilan verbal untuk program - bukan pengguna terminal.

Ngomong-ngomong, bagaimana saya melihat hanya beberapa aktivitas terbaru seperti 5 atau 10 entri terakhir untuk melihat apa yang berubah?

Xeoncross
sumber
9
Ya, itu seharusnya bekerja seperti, um git log,.
Paul Draper

Jawaban:

261

limit opsi, misalnya:

svn log --limit 4

svn log -l 4

Hanya 4 entri terakhir

Bert F
sumber
127

Selain apa yang dikatakan Bert F , banyak perintah, termasuk yang logmemiliki opsi -r(atau --revision). Berikut ini adalah beberapa contoh praktis menggunakan opsi ini untuk menunjukkan rentang revisi:

Untuk mendaftar semuanya dalam urutan menaik:

svn log -r 1:HEAD

Untuk membuat daftar semuanya dalam urutan menurun:

svn log -r HEAD:1

Untuk membuat daftar semuanya dari tanggal tiga belas hingga dasar revisi yang saat ini dicentang dengan urutan naik:

svn log -r 13:BASE

Untuk mendapatkan semuanya di antara tanggal yang diberikan:

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

Anda dapat menggabungkan semua ekspresi di atas dengan --limitopsi, sehingga Anda dapat memiliki kontrol yang cukup terperinci atas apa yang dicetak. Untuk info lebih lanjut tentang -rungkapan - ungkapan ini merujuk ke svn help logatau bab yang relevan dalam buku Kontrol Versi dengan Subversi

Daniel Dinnyes
sumber
8
Terima kasih banyak atas penjelasannya, @Daniel Dinnyes - Saya sering memiliki masalah yang berlawanan dari OP: svn log .mungkin mengembalikan hanya revisi awal untuk saya (demikian juga dengan svn log --limit 4 .); tetapi jika saya menelepon svn log -r HEAD:1 ., maka saya akhirnya mendapatkan semua entri terdaftar ... Terima kasih lagi - tepuk tangan!
sdaau
Ini lebih baik, karena svn log hanya menampilkan riwayat perubahan jalur saat ini.
Ninja
41

Saya suka menggunakan -vuntuk mode verbose.
Ini akan memberi Anda id komit, komentar dan semua file yang terpengaruh.

svn log -v --limit 4

Contoh output:

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
Jonas Söderström
sumber
2
Opsi verbose sangat berguna
Jason George
Dan jika dev-team benar-benar manis, mereka memasukkan id masalah dalam komentar svn dan Anda dapat dengan mudah menemukan masalah terhubung ke komit.
Jonas Söderström
11

Pipa output melalui lessatau pager lain:

svn log | less
Greg Hewgill
sumber
1
Jika Anda memiliki revisi> 23r, Anda masih akan menunggu ~ 20 detik untuk melihat entri pertama (dan ketika tidak menggunakan log verbose). Tapi itu bagus - pertunjukan terbaru di atas. Dan lebih baik daripada paging 100-at-a-time TortoiseSVN! Ketika Anda ingin melangkah lebih jauh ke belakang.
Tomasz Gandor
6

Jika ada yang melihat pertanyaan lama ini, perintah praktis untuk melihat perubahan sejak pembaruan terakhir Anda:

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

LE (terima kasih Gary atas komentarnya)
hal yang sama, tetapi jauh lebih pendek dan lebih logis:

svn log -r BASE:HEAD -v

Catalin
sumber
8
atau hanyasvn log -r BASE:HEAD -v
Gary
5

Untuk menambahkan apa yang dikatakan orang lain, Anda juga bisa membuat alias di file .bashrc atau .bash_aliases Anda:

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

atau apa pun yang Anda inginkan sebagai default Anda

james-geldart
sumber
4

Seperti yang telah Anda perhatikan, svn logperintah dijalankan tanpa argumen yang menunjukkan semua pesan log yang berhubungan dengan URL yang Anda tentukan atau ke folder copy pekerjaan di mana Anda menjalankan perintah.

Anda selalu dapat memperbaiki / membatasi svn loghasil:

  • svn log --limit NUM hanya akan menampilkan NUM revisi pertama,
  • svn log --revision REV1(:REV2) akan menampilkan pesan log untuk revisi REV1 atau untuk rentang REV1 - REV2,
  • svn log --searchakan menampilkan revisi yang cocok dengan pola pencarian yang Anda tentukan (perintah tersedia di Subversion 1.8 dan klien yang lebih baru). Anda dapat mencari berdasarkan
    • penulis revisi (yaitu nama pengguna committers),
    • saat revisi dilakukan,
    • revisi teks komentar (pesan log),
    • daftar jalur yang diubah dalam revisi.
bahrep
sumber
4

Jawaban ini diarahkan pada pertanyaan lebih lanjut mengenai opsi sub-perintah Subversion. Untuk setiap sub-perintah yang tersedia (yaitu, tambah, masuk, status ...), Anda cukup menambahkan --helpopsi untuk menampilkan daftar lengkap opsi yang tersedia yang dapat Anda gunakan dengan sub-perintah Anda serta contoh tentang cara menggunakannya. Cuplikan berikut ini diambil langsung dari svn log --helpoutput perintah di bagian "contoh":

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

Tetapi log svn masih dalam urutan terbalik, yaitu sebagian besar entri terbaru adalah keluaran pertama, bergulir dari bagian atas terminal saya dan hilang. Saya benar-benar ingin melihat entri terakhir, yaitu urutan pengurutan harus kronologis. Satu-satunya perintah yang melakukan ini tampaknyasvn log -r 1:HEAD tetapi itu membutuhkan waktu terlalu lama pada repositori dengan sekitar 10.000 entri. Saya datang ini ini:

Tampilkan 10 entri subversi terakhir dalam urutan kronologis:

svn log -r $(svn log -l 10 | grep '^r[0-9]* ' | tail -1 | cut -f1 -d" "):HEAD
Othmar Wigger
sumber