Apakah ketidaknyamanan tentang penggabungan dalam SVN sebelum v1.5 sudah usang saat kekurangan metadata tidak terjadi lagi?

11

Saya mulai dengan SVN dan banyak sumber mengatakan bahwa penggabungan sangat sulit di SVN dibandingkan dengan alat DVCS. The sebagian besar pertanyaan terakhir saya bisa menemukan di sini pada SE adalah dari 2012.

Terkadang ada disebutkan bahwa alasannya adalah bahwa SVN sebelum v1.5 tidak memiliki metadata, tetapi SVN ada di versi 1.8.9 sekarang.

Mengingat bahwa SVN sekarang jauh lebih matang daripada v1.5, dan terutama fakta bahwa kami tidak menggunakan SVN 1.5 sehingga kami tidak menderita dari kekurangan metadata yang disebutkan - apakah masih banyak validitas dalam argumen terhadap SVN?

Saya mengerti bahwa DVCS memiliki pendekatan yang sama sekali berbeda yang sering lebih diinginkan, tetapi bagi mereka yang "harus" menggunakan SVN untuk alasan apa pun, penggabungan bukan lagi "neraka", bukan?

Torben Gundtofte-Bruun
sumber
3
@ TorbenGundtofte-Bruun - Saya tidak punya waktu sekarang untuk memberikan jawaban seperti itu, tetapi saya akan mengatakan "jangan takut SVN." Ini memiliki keterbatasan, tetapi demikian juga DVCS.
kdgregory

Jawaban:

15

Ini berfungsi dengan baik jika Anda tetap pada kasus sederhana , tetapi ada beberapa yang rumit yang tidak.

Keterbatasan yang dapat saya pikirkan:

  • Ia hanya dapat menemukan leluhur terbaru jika ia berada di salah satu cabang yang terlibat. Jadi, jika Anda membuat branches/thisdan branches/thatbaik dari trunkdan kemudian mencoba untuk menggabungkan branches/thisuntuk branches/that, tidak akan tahu apa yang harus dilakukan. Yang berarti Anda hanya dapat menggabungkan cabang ke atau dari induknya. Anda dapat mengalami ini jika Anda memulai dua cabang fitur dan kemudian menyadari bahwa fitur tersebut saling tergantung dan perlu menggabungkannya.

  • Meskipun mengklaim dapat melacak nama, menggabungkan cabang ketika file dipindahkan di satu sisi dan dimodifikasi di sisi lain tidak selalu menemukan file yang tepat untuk digabung dan memperbaikinya secara manual agak membosankan karena tidak meninggalkan informasi yang diperlukan di mana pun di tangan.

  • File yang ditambahkan terkadang menyebabkan konflik palsu pada penggabungan yang lebih baru.

  • Karena subversi tidak memiliki konsep cabang yang terpisah, Anda hanya dapat menggabungkan subtree dari sebuah proyek dan itu dapat menyebabkan kekacauan besar dengan cukup cepat. Sangat disarankan untuk berhati-hati untuk selalu menggabungkan cabang lengkap. Sayangnya untuk beberapa alasan kadang-kadang properti info gabungan muncul di subdirektori bahkan jika mereka tampak berlebihan dan gabungan dilakukan dengan benar untuk seluruh cabang.

  • Terakhir namun tidak kalah lambat . Penggabungan proyek dengan ukuran serius apa pun sering membutuhkan waktu beberapa menit di mana sebagian besar DVCS dapat melakukannya dalam waktu satu detik.

Jan Hudec
sumber
+1, jawaban yang bagus. Poin mengenai leluhur yang sama adalah sesuatu yang harus saya perhatikan. Apakah Anda punya referensi untuk fakta-fakta ini?
Doval
1
@Doval: Pengalaman.
Jan Hudec
mungkin juga layak disebutkan bahwa svn dosen't memiliki konsep tag yang terpisah
jk.
Mengenai peluru pertama Anda (terima kasih atas penjelasan yang sangat jelas!) Bisakah itu tidak diselesaikan dengan menggunakan cabang akumulasi yang memiliki titik cabang yang sama dengan cabang fitur? (berdasarkan Vance98 ) Apakah masalah hanya benar-benar terjadi ketika dua cabang fitur memiliki titik cabang yang berbeda?
Torben Gundtofte-Bruun
@ TorbenGundtofte-Bruun: Nenek moyang bersama yang paling baru tidak harus menjadi titik cabang. Anda dapat menemukannya sendiri dan memberi tahu subversi untuk menerapkan perubahan di antara revisi pasak tertentu. Tetapi masalahnya adalah bahwa ini banyak pekerjaan dan Anda harus menyadari bahwa Anda harus melakukannya, karena subversi tidak serta-merta mengangkat tangan itu mengatakan itu tidak dapat bergabung. Sebaliknya ia dapat menemukan leluhur bersama yang bukan yang paling baru dan menghasilkan banyak konflik.
Jan Hudec
1

Dari pengalaman saya, bergabung dalam SVN 'diperbaiki' di versi 1.6. Saya bekerja di Mercurial dan SVN, dan karena versi 1.6 dari SVN, penggabungan tampaknya memiliki jumlah pekerjaan yang sama di kedua platform. Satu-satunya pengecualian adalah Anda harus ingat untuk memberikan --reintegrateopsi saat menggabungkan dari cabang kembali ke bagasi menggunakan SVN.

Ini hanya pengalaman operasional saya. Saya tidak tahu apa-apa tentang internal SVN.

Charles E. Grant
sumber
2
1.8 akhirnya dapat mendeteksi kasus "reintegrate" itu sendiri, untungnya. Tapi itu hanya merawat leluhur umum terbaru di lokal atau jauh. Masih tidak dapat menemukannya di cabang ketiga.
Jan Hudec