Apakah ada cara untuk mengedit pesan log dari revisi tertentu di Subversion? Saya tidak sengaja menulis nama file yang salah dalam pesan komit saya yang dapat membingungkan nantinya.
Saya telah melihat Bagaimana cara mengedit pesan komit yang salah di Git? , tetapi solusi untuk pertanyaan itu tampaknya tidak serupa untuk Subversion (menurut svn help commit
).
pre-revprop-change
skrip luar biasa yang memungkinkan pengguna yang berkomitmen untuk memodifikasi log mereka hingga 3 jam setelah komit. Ini adalah kompromi yang sangat baik antara fleksibilitas / log akurat, dan memelihara kesetiaan repositori: wandisco.com/svnforum/threads/...svn propset dummyproperty 1 yourfile; svn commit yourfile -m yourmessage
Jawaban:
Pada dasarnya Anda harus memiliki hak admin (langsung atau tidak langsung) ke repositori untuk melakukan ini. Anda dapat mengkonfigurasi repositori untuk memungkinkan semua pengguna melakukan ini, atau Anda dapat mengubah pesan log langsung di server.
Lihat ini bagian dari Subversion FAQ (penekanan):
sumber
Ketika Anda menjalankan perintah ini,
dan kalau-kalau Anda melihat pesan ini:
Itu karena Subversion tidak memungkinkan Anda untuk memodifikasi pesan log karena mereka tidak berversi dan akan hilang secara permanen.
SVN yang di-host-unix
Pergi ke direktori hooks di server Subversion Anda (ganti ~ / svn / reponame dengan direktori repositori Anda)
Hapus ekstensi
Jadikan itu dapat dieksekusi (tidak dapat melakukan chmod + x!)
Sumber
SVN yang dihosting Windows
File template di direktori hook tidak dapat digunakan karena tidak spesifik-Unix. Anda perlu menyalin file batch Windows
pre-revprop-change.bat
ke direktori hooks, misalnya yang disediakan di sini .sumber
Berikut adalah variasi praktis yang tidak saya lihat disebutkan dalam faq. Anda dapat mengembalikan pesan saat ini untuk diedit dengan menentukan editor teks.
sumber
svn: Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook
sumber
Saya baru-baru ini ditugaskan dengan ini.
Kami ingin mengizinkan pemrogram kami untuk memodifikasi hanya pesan komit mereka sendiri, dan membatasi seberapa jauh mereka diizinkan melakukannya. Kami memutuskan mereka akan diizinkan untuk mengubah pesan log yang dilakukan hari itu, untuk memperbaiki kesalahan ketik dll.
Setelah melihat beberapa contoh online lainnya saya meretas ini bersama-sama, kita berada di lingkungan windows, jadi ini adalah konten kita dari
pre-revprop-change.bat
:Sunting: Ide asli untuk ini berasal dari utas ini :
sumber
if /I not '%DATESTAMPDAY%'=='%DAY%' goto ERROR_MSGTOOOLD
, saya harus beralih ke tanda kutip ganda di sekitar dua variabel. (Anda tidak akan percaya berapa lama waktu yang dibutuhkan untuk mencari tahu.) Kalau tidak, saya akan mendapatkan hal-hal seperti "== '02' tidak terduga pada saat ini" (pada hari ke-2 setiap bulan). Batch-fu saya tidak cukup kuat untuk mengetahui mengapa itu terjadi, tetapi kalau-kalau ada orang lain yang mengalami masalah aneh, mungkin membantu.Di Windows, menggunakan klien Tortoise SVN:
Jika tidak berhasil, itu mungkin karena cara pengaturan SVN di server, baca tanggapan lain di sini.
sumber
Jika Anda menggunakan IDE seperti gerhana, Anda dapat menggunakan cara mudah ini.
Karena
right click on the revision id for your commit and select 'Set commit properties'
.Anda dapat mengubah pesan sesuai keinginan dari sini.
sumber
Jika repositori Anda mengaktifkan pengaturan properti revisi melalui kait pre-revprop-change Anda dapat mengubah pesan log lebih mudah.
Atau di TortoiseSVN, AnkhSVN dan mungkin banyak klien subversi lainnya dengan mengklik kanan pada entri log dan kemudian 'mengubah pesan log'.
sumber
The Subversion FAQ mencakup ini, tetapi menggunakan sekelompok membingungkan istilah terdefinisi seperti
REPOS_PATH
tanpa memberikan contoh-contoh aktual.Mungkin diperlukan beberapa upaya untuk membuatnya berfungsi, jadi simpan pesan komit Anda yang diperbarui dalam sebuah file. Berbeda dengan
svn-commit.tmp
file, Subversion tidak akan mempertahankan pengetikan Anda jika ada masalah.Di direktori kerja Anda, jalankan
svn propedit -r N --revprop svn:log
untuk mengedit pesan komit. Jika itu berhasil, bagus! Tetapi mungkin tidak, karena
svn:log
properti revisi tidak berversi dan Subversion secara default akan menghentikan Anda dari menimpanya, baik dengan skrip kaitpre-revprop-change
, atau pesan kesalahan yang Anda tidak memiliki kait seperti itu.Untuk mengubah kait, Anda memerlukan akses ke sistem file tempat repositori di-host.
svn info
akan memberi tahu Anda Repositori Root. Misalkan itu~/svnrepo
.cd
untuk~/svnrepo/hooks
pre-revprop-change
ataupre-revprop-change.bat
naskah? Jika demikian, komentar sementara bagian yang batal jika Anda mencoba untuk mengubahsvn:log
.Jika tidak, pada Windows, buat file kosong bernama
pre-revprop-change.bat
. Inilah satu cara untuk melakukannya:Kalau tidak, di Unix, jalankan
Dalam copy pekerjaan, jalankan
svn propedit -r N --revprop svn:log
lagi~/svnrepo/hooks/svn-revprop-change
(.bat
)sumber
Saya menemukan implementasi yang bagus dari sisi kait pre-rev-prop-change sisi server di svnforum: https://www.svnforum.org/forum/opensource-subversion-forums/scripts-contributions/8571-pre-revprop-change -shell-script-allow-commiters-to-change-own-log-dalam-x-jam
Ini mengimplementasikan
Raih dari sana dan edit sesuka hati. Saya lebih suka tidak menyalinnya di sini karena saya bukan penulis asli dan tidak ada pemberitahuan hak cipta yang memungkinkan saya untuk melakukannya.
sumber