Apakah ada cara untuk melakukan pencarian teks lengkap dari repositori subversi, termasuk semua sejarahnya?
Sebagai contoh, saya telah menulis fitur yang saya gunakan di suatu tempat, tetapi kemudian tidak diperlukan, jadi saya mencari file-file itu, tetapi sekarang saya perlu menemukannya lagi untuk menggunakannya untuk hal lain. Log svn mungkin mengatakan sesuatu seperti "menghapus barang yang tidak digunakan", dan ada banyak checkin seperti itu.
Sunting 2016-04-15: Harap dicatat bahwa apa yang ditanyakan di sini oleh istilah "pencarian teks lengkap", adalah untuk mencari perbedaan aktual dari komit, dan bukan nama file dan / atau pesan komit . Saya menunjukkan ini karena frasa penulis di atas tidak mencerminkan dengan sangat baik - karena dalam contohnya ia mungkin hanya mencari nama file dan / atau melakukan pesan. Makanya banyak svn log
jawaban dan komentar.
sumber
--search
argumen untuksvn log
perintah. Lihat jawaban saya di stackoverflow.com/a/17473516/761095svn log --search
tidak melakukan pencarian teks lengkap seperti yang disyaratkan oleh @rjmunro, tetapi hanya mencari penulis, tanggal, pesan log, dan daftar jalur yang diubah.Jawaban:
sumber
apt-get install git-svn
.svn log
di Apache Subversion 1.8 mendukung opsi baru--search
. Jadi, Anda dapat mencari pesan log riwayat repositori Subversion tanpa menggunakan alat dan skrip pihak ketiga.svn log --search
mencari di penulis, tanggal, log pesan teks dan daftar jalur yang diubah.Lihat SVNBook |
svn log
referensi baris perintah .sumber
Jika Anda menjalankan Windows lihatlah di SvnQuery . Ini memelihara indeks teks lengkap dari repositori lokal atau jarak jauh. Setiap dokumen yang pernah berkomitmen pada repositori akan diindeks. Anda dapat melakukan kueri seperti Google dari antarmuka web sederhana.
sumber
Saya menggunakan shellscript kecil, tetapi ini hanya berfungsi untuk satu file. Anda dapat menggabungkan ini dengan menemukan untuk menyertakan lebih banyak file.
Jika Anda benar-benar ingin mencari semuanya, gunakan
svnadmin dump
perintah dan coba menerimanya.sumber
Cara terbaik yang saya temukan untuk melakukan ini adalah dengan lebih sedikit:
Setelah lebih sedikit menghasilkan output, Anda dapat menekan
/
untuk mencari, seperti VIM.Edit:
Menurut penulis, ia ingin mencari lebih dari sekadar pesan dan nama file. Dalam hal ini Anda akan diminta untuk ghetto-hack bersama dengan sesuatu seperti:
Anda juga dapat mengganti
grep
atau melakukan pencarian untuk Anda. Jika Anda ingin menggunakan ini pada sub-direktori repositori, Anda harus menggunakannyasvn log
untuk melihat revisi pertama di mana direktori itu ada, dan gunakan revisi itu sebagai gantinya0
.sumber
Saya telah mencari sesuatu yang serupa. Yang terbaik yang saya hasilkan adalah OpenGrok . Saya belum mencoba mengimplementasikannya, tetapi kedengarannya menjanjikan.
sumber
untuk diff Anda dapat menggunakan
--diff
opsikemudian gunakan vim atau nano atau apa pun yang Anda suka gunakan, dan lakukan pencarian untuk apa yang Anda cari. Anda akan menemukannya dengan cepat.
Ini bukan skrip mewah atau apa pun yang otomatis. Tapi itu berhasil.
sumber
Meskipun tidak gratis, Anda bisa melihat Fisheye dari Atlassian, orang yang sama yang membawakan Anda JIRA. Itu pencarian teks lengkap terhadap SVN dengan banyak fitur berguna lainnya.
http://www.atlassian.com/software/fisheye/
sumber
Saya mencari hal yang sama dan menemukan ini:
http://svn-search.sourceforge.net/
sumber
Saya hanya mengalami masalah ini dan
melakukan pekerjaan untuk saya. Mengembalikan revisi kejadian pertama dan mengutip kalimat yang saya cari.
sumber
Saya tidak punya pengalaman dengan itu, tetapi SupoSE (open source, ditulis dalam Java) adalah alat yang dirancang untuk melakukan hal ini.
sumber
svn log -l<commit limit> | grep -C<5 or more lines> <search message>
sumber
Saya biasanya melakukan apa yang dikatakan Jack M (gunakan svn log --verbose) tapi saya pipa untuk grep bukannya kurang.
sumber
less
Anda sebenarnya dapat melihat revisi, tanggal, dll, bukan hanya baris di komentar. Biasanya itu yang saya cari.Saya menulis ini sebagai skrip bash cygwin untuk mengatasi masalah ini.
Namun itu mengharuskan istilah pencarian saat ini dalam file sistem file. Untuk semua file yang cocok dengan grystem filesystem, grep dari semua svn diffs untuk file tersebut kemudian dilakukan. Tidak sempurna, tetapi harus cukup baik untuk sebagian besar penggunaan. Semoga ini membantu.
/ usr / local / bin / svngrep
/ usr / local / bin / svnrevisi
sumber
Jika Anda mencoba menentukan revisi mana yang bertanggung jawab untuk baris kode tertentu, Anda mungkin mencari:
Kredit: jawaban asli
sumber
Saya menemukan skrip bash ini , tetapi saya belum mencobanya.
sumber