Saat ini saya sedang mencari cara terbaik untuk mengatur mirror SVN. Saat ini saya melihat tiga kemungkinan semuanya dengan kelemahan mereka sendiri:
- Miliki SVN post-commit-Hook yang memblokir dan menyinkronkan melalui svnsync. Masalahnya di sini jelas, bahwa komit itu memblokir sampai data ditransfer ke cermin.
- Miliki SVN post-commit-Hook yang non-blocking dan sinkronisasi melalui svnsync. Di sini saya melihat masalah berikut yang lebih halus: Bayangkan seseorang memeriksa file BESAR, dan orang lain segera setelah itu memeriksa file kecil. Karena komit adalah non-pemblokiran, dua proses svnsync dapat berjalan pada waktu yang sama dan file kecil dapat menyalip file BIG dalam perjalanan ke mirror (ini tampaknya sangat kritis terhadap waktu dan tidak mungkin, meskipun pada prinsipnya mungkin). Revisi mereka akan ditukar.
- Sinkronkan seperti setiap lima belas menit dengan cron-job. Masalah yang sama jika komit membutuhkan waktu lebih dari 15 menit dan jelas waktu tunda itu.
Apakah saya lupa kemungkinan? Apakah saya melakukan kesalahan? Ada ide? Sudah terima kasih
Mungkin saya harus mencatat bahwa kemungkinan kedua adalah yang disarankan oleh berbagai situs web. Misalnya, lihat http://www.kirkdesigns.co.uk/mirror-svn-repository-svnsync
Jawaban:
Anda bisa mencoba pendekatan yang mirip dengan yang kami gunakan di Atlassian
https://www.atlassian.com/blog/archives/subversion_replication_at_atla?_ga=2.217251286.1933127788.1517539727-1159165484.1517539727
disclaimer: Saya saat ini adalah karyawan Atlassian, tetapi tidak terlibat dalam mengimplementasikan solusi ini (hanya mempertahankannya)
Seperti yang saya katakan di atas dalam komentar, svnsync, dijalankan dari repositori jarak jauh berperilaku deterministik. Itu tidak dapat menerapkan perubahan yang rusak. Jadi satu-satunya masalah yang Anda miliki menggunakan repositori jarak jauh adalah jumlah jeda karena propagasi changeset.
sumber