Peringatan: Sejak posting ini saya menemukan Mercurial dan menyukainya jauh lebih baik daripada SVN. Jadi posting ini agak ketinggalan zaman dengan komentar Pro SVN dan anti-DVCS umum, tetapi hal-hal anti-git masih relevan
Saya penggemar SVN atas Git.
Mengapa? Karena SVN jauh lebih mudah untuk satu pengembang atau tim kecil, dan git (khususnya msysgit) membuat saya tidak enak.
Ketika saya magang di sebuah toko kecil, saya diperkenalkan dengan git di Windows. Saya segera memperhatikan jumlah pekerjaan yang diperlukan untuk membuatnya bekerja dengan Github. Pertama, saya harus membuat kunci pribadi ssh, menempelkan kunci publik di Github, kemudian membuka kontes dan membuka kunci pribadi saya setiap kali saya ingin mendorong, yang sangat menjengkelkan.
Dan saya tidak pernah benar-benar menyukai bahwa saya merobohkan seluruh repositori. Saya akan mengakui bahwa saya tidak pernah bekerja dengan sesuatu yang besar, tetapi saya akan takut untuk mengunduh repositori KDE di Git jika seluruh repo dan revisinya ada di HD saya.
Lalu ada proses yang membingungkan untuk membuat komitmen. TMK, saya harus pertama "tahap" semua file yang ingin saya komit (yang tersedot ketika Anda memiliki banyak banyak file, butuh beberapa saat untuk menemukan perintah manual untuk mem-stage semuanya), kemudian lakukan komit, kemudian dorong ke utama repo (mengapa itu operasi yang terpisah ?!).
Anda juga memiliki data komit tidak (!) Yang sangat membantu. Oh, lihat, ini adalah bagian komitmen 14f74433245ae17aeeaa dari pohon 2167a4934d0a4a7db0de dan induk d7042abb4821d3faf600. Apa artinya itu? Saya harus bisa memikirkan hal-hal dengan cukup cepat dan tidak perlu berkonsultasi dengan beberapa dokumentasi aneh.
Berbicara tentang dokumentasi, setidaknya ketika saya menggunakannya, sepertinya semuanya dalam format file linux man, IE membingungkan dan tidak berguna bagi saya. Saya jarang dapat menemukan banyak bantuan dalam dokumen dan hanya beralih ke google.
Dan dengan komitmen, satu hal yang saya tidak suka adalah kurangnya nomor versi. Sekarang saya tahu ini karena desain git, tetapi perangkat lunak apa pun membutuhkan nomor versi. Saya masih ingat komit penanda yang akan muncul mengatakan "Mengubah versi ke 1.8.6" atau sesuatu yang serupa, tetapi Anda masih tidak bisa membuat angka. Bagi saya memiliki versi menjadi 1.8.6.5164 (bagian terakhir adalah nomor revisi) memberi tahu saya lebih dari sekadar 1.8.6 dan catatan yang mengatakan bahwa sesuatu yang kecil berubah, cobalah
Semakin spesifik perangkat lunak, program dasar pada Windows adalah msysgit, yang merupakan antarmuka yang mengerikan. Itu terkunci pada saya beberapa kali, memiliki antarmuka yang mengerikan, dan integrasi CLI-GUI sangat rapuh. Pecandu baris perintah di sekitar saya semakin membenci gui.
Sekarang mari kita lihat SVN. Dan karena saya menggunakan Windows dan memiliki akun google, khususnya TortoiseSVN dan Google Code.
Pertama, integrasi shell lengkap untuk melakukan segalanya pada repositori (dan bagi Anda orang linux, RabbitVCS melakukan hal yang sama), tidak diperlukan GUI utama. Mendapatkan repositori semudah checkout, tidak perlu SSH (tidak ingat apakah Github membutuhkan SSH untuk menarik), dan tidak ada seluruh repo + semua komitmen masa lalu yang tersimpan di HD Anda.
Berkomitmen itu ekstrem mudah, terutama karena tidak diperlukan SSH atau pementasan. Anda cukup memeriksa semua file yang ingin Anda gunakan dengan sangat membantu pilih semua opsi yang dalam versi msysgit saya tidak tersedia, ketik pesan komit, dan tekan komit. Google Code kemudian meminta Anda untuk informasi login Anda (yang kebanyakan klien simpan), dan Anda selesai. Sederhana, mudah, dan tidak ada SSH
Nomor versi? Dengan beberapa kode mudah, Anda dapat menambahkan nomor versi dan nomor komit ke semua checkout, yang membuat semuanya jadi lebih mudah. Anda juga mendapatkan nomor versi yang dapat digunakan yang benar-benar menunjukkan perubahan, misalnya 1.8.6.5165 lebih baru dari 1.8.6.5164.
Dokumentasi? Yah, sulit dikatakan. Kura-kura didokumentasikan, tetapi saya belum benar-benar merujuk ke dokumentasi resmi sedemikian lama sehingga saya tidak bisa menilai. Membaca panduan intro sederhana sudah cukup bagi saya.
Penggabungan adalah hal lain yang tidak bisa saya bandingkan. Saya harus melakukannya sekali di Git ketika orang lain melakukan perubahan pada file yang sedang saya kerjakan, tetapi tidak pernah di SVN.
Mana yang akan saya rekomendasikan? Baik di tim besar, git memang memiliki kelebihan, terutama dalam siklus pengembangan non-liniernya. Dalam proyek lain saya melihat 4 pemrogram memulai di cabang terpisah, kemudian menggabungkan semua kode dengan cara yang sangat aneh yang entah bagaimana berubah menjadi cabang master akhir. Github dan msysgit memiliki alat visualisasi yang sangat bagus untuk seluruh proyek yang sangat saya sukai.
Untuk pengembang tunggal atau proyek tim kecil, SVN akan menjadi yang terbaik karena sebagian besar fitur Gits tidak digunakan dan Anda hanya mendapatkan bagian negatifnya. Kesederhanaan adalah hal yang menyenangkan