Saya ingin mengedit komentar log di browser repositori dan menerima pesan kesalahan bahwa tidak ada kait pre-revprop-change ada untuk repositori. Selain memiliki nama yang menakutkan, apa itu pengait perubahan pra-revprop, dan bagaimana cara membuatnya?
169
Jawaban:
Pada dasarnya ini adalah skrip yang diluncurkan sebelum properti tidak berversi dimodifikasi pada repositori, sehingga Anda dapat mengelola lebih tepat apa yang terjadi pada repositori Anda.
Ada templat di distrib SVN untuk kait yang berbeda, yang terletak di subdirektori / hooks (* .tmpl yang harus Anda edit dan ubah namanya tergantung pada OS Anda, untuk mengaktifkan).
sumber
svnsync
mirror, maka skrip default perlu diubah, karena hanya memungkinkan perubahan ke svn: log. Svnsync berubah lebih dari ini, jadi saya cukup meletakkanexit 0
di sana untuk mengizinkan semua perubahan properti (karena ini hanya cermin bagi saya).pre-revprop-change
ke direktori yang sama dan membuatnya dapat dieksekusi untuk pengguna server web (di Linux).Untuk Windows, berikut ini tautan ke file batch contoh yang hanya memungkinkan perubahan pada pesan log (bukan properti lainnya):
http://ayria.livejournal.com/33438.html
Pada dasarnya salin kode di bawah ini ke file teks dan beri nama
pre-revprop-change.bat
dan simpan di\hooks
subdirektori untuk repositori Anda.sumber
Agar Linux mengizinkan edisi komentar log,
pre-revprop-change.tmpl
dihooks
direktori repositori Andapre-revprop-change
www-data
)Diedit: (terima kasih kepada lindes)
0
untuk jenis pengeditan, yang ingin Anda izinkan.sumber
Berikut ini tautan ke pertanyaan overflow tumpukan dengan banyak kait umum Jenis Umum Kait Subversion , termasuk sumber asli
pre-revprop-change
kait untuk Windows yang diposkan silang di sini.Anda harus merujuk ke sana karena mereka dapat ditingkatkan dari waktu ke waktu.
sumber
Terima kasih #patmortech
Dan saya menambahkan kode Anda yang "hanya pengguna yang sama yang dapat mengubah kodenya".
sumber
Nama skrip kait tidak begitu menyeramkan jika Anda berhasil menguraikannya: ini adalah kait perubahan properti pra revisi . Singkatnya, tujuan
pre-revprop-change
skrip kait adalah untuk mengontrol perubahan properti yang tidak berversi (revisi) dan mengirim pemberitahuan (misalnya untuk mengirim email ketika properti revisi diubah).Ada 2 jenis properti di Subversion:
svn:needs-lock
dansvn:mime-type
) yang dapat diatur pada file dan direktori,svn:log
dansvn:date
) yang ditetapkan pada revisi repositori .Properti versi memiliki riwayat dan dapat dimanipulasi oleh pengguna biasa yang memiliki akses Baca / Tulis ke repositori. Di sisi lain, properti tidak berversi tidak memiliki riwayat dan melayani sebagian besar tujuan pemeliharaan. Misalnya, jika Anda mengkomit revisi, maka
svn:date
waktu UTC dengan komitmen Anda,svn:author
dengan nama pengguna Anda dansvn:log
dengan pesan log komit Anda (jika Anda tentukan).Seperti yang sudah saya tentukan, tujuan
pre-revprop-change
skrip kait adalah untuk mengontrol perubahan properti revisi. Anda tidak ingin semua orang yang memiliki akses ke repositori dapat mengubah semua properti revisi, jadi mengubah properti revisi dilarang secara default. Untuk memungkinkan pengguna mengubah properti, Anda harus membuatpre-revprop-change
kait.Hook sederhana dapat berisi hanya satu baris:
exit 0
. Ini akan memungkinkan pengguna terotentikasi untuk mengubah properti revisi apa pun dan tidak boleh digunakan di lingkungan nyata. Pada Windows, Anda bisa menggunakan skrip batch atau skrip berbasis PowerShell untuk menerapkan beberapa logika di dalampre-revprop-change
hook.Skrip PowerShell ini memungkinkan untuk mengubah
svn:log
properti saja dan menolak pesan log kosong.Skrip kumpulan ini memungkinkan hanya pengguna "svnmgr" untuk mengubah properti revisi:
sumber
Untuk pengguna PC: Ekstensi .bat tidak berfungsi untuk saya ketika digunakan pada pengerjaan Windows Server. Saya menggunakan VisualSvn seperti yang disarankan Django Reinhardt, dan itu menciptakan sebuah kait dengan ekstensi .cmd.
sumber
(Solusi ini pasti memiliki kelemahan, karena tidak ada yang diperiksa / dilarang. Tetapi untuk kasus saya - repo lokal yang hanya saya gunakan - tampaknya berfungsi.)
sumber