Alasan spesifik untuk masih menggunakan Subversion? [Tutup]

22

Saya ingin memilih sistem kontrol versi untuk perusahaan saya. Sejauh ini saya tahu saya memiliki Git, Subversi dan Mercurial.

Hari ini saya melihat bahwa Git adalah yang paling banyak digunakan, jadi saya bertanya-tanya: apakah akan ada alasan khusus untuk tetap menggunakan Subversion, atau haruskah saya langsung pergi ke Git?

pengguna1179459
sumber
36
Keduanya bekerja. Yang penting adalah apakah mereka akan memenuhi persyaratan Anda, yang Anda belum memberi tahu kami.
Matthew Flynn
11
Pada argumen mana Anda mengecualikan Mercurial?
mouviciel
8
-1 untuk kata-kata subjektif (umpan IMHO) dan "Hari-hari itu saya melihat bahwa Git adalah yang paling banyak digunakan" - kutipan diperlukan. Git sangat umum di dunia open source, tetapi di ruang perusahaan itu jauh lebih jarang. Korps sangat menyukai ide repositori tunggal, sentral, berwibawa dan sangat lambat untuk berubah. Di ruang perusahaan Anda lebih cenderung melihat CVS baik daripada SVN, apalagi DVCS.
Keith
4
@RobinWinslow - SVN berbeda dari Git. Lebih cocok untuk beberapa keadaan dan lebih buruk cocok untuk yang lain. Secara pribadi saya lebih suka DVCS secara umum dan Anda jelas lebih suka Git, tetapi keduanya adalah opini subjektif. Mereka bukan tanpa nilai, tetapi mereka tidak termasuk dalam situs seperti ini.
Keith

Jawaban:

46

SVN tidak mati sama sekali. Ini masih digunakan sangat luas, dan itu tidak akan terjadi dalam waktu dekat. SVN jauh lebih mudah digunakan daripada kontrol versi terdistribusi, terutama jika Anda tidak benar-benar menjalankan proyek terdistribusi yang membutuhkan kontrol versi terdistribusi.

Jika Anda hanya memiliki satu repositori pusat (yang hanya dibutuhkan oleh perusahaan Anda jika masih cukup kecil untuk bertahan tanpa kendali sumber), jauh lebih mudah untuk menggunakan SVN untuk berinteraksi dengannya. Misalnya, dengan SVN Anda dapat menarik perubahan dari repositori, atau melakukan perubahan lokal Anda ke sana, dengan operasi tunggal, sedangkan HG dan Git memerlukan dua atau tiga langkah untuk melakukan pekerjaan yang setara.

Dan dengan revisi baru-baru ini, SVN telah memperbaiki banyak masalah kinerja yang membuat orang lebih suka HG dan Git. Ini secara signifikan lebih cepat sekarang daripada beberapa tahun yang lalu, dan pada titik ini, benar-benar tidak ada alasan untuk melihat HG atau Git untuk proyek Anda kecuali Anda benar-benar membutuhkan fitur-fitur canggih dari kontrol versi terdistribusi.

Mason Wheeler
sumber
16
Saya tidak sepenuhnya setuju dengan perkiraan Anda, tetapi saya ingin menambahkan satu poin penting yang mendukung SVN: Banyak orang di industri merasa nyaman dengan SVN tetapi tidak cukup tahu Git untuk bekerja dengan nyaman dengannya. Jika seluruh tim Anda terbiasa dengan SVN, maka beralih ke Git mungkin perlu biaya cukup besar. (Kebalikannya juga bisa benar, tentu saja).
Joachim Sauer
8
Saya akan menangung selusin kali ini jika saya bisa. Banyak orang mengikuti mode itu, tetapi tidak terlalu berpikir mengapa mereka perlu kontrol sumber yang didistribusikan.
Euforia
21
@ Euphoric: Saya tahu persis mengapa saya selalu ingin kontrol sumber didistribusikan pada setiap proyek. Ini memiliki efek samping yang penting yaitu menjadikan percabangan dan penggabungan menjadi sederhana, jelas dan dapat diandalkan. Subversi masih terhenti dalam kasus sudut dengan percabangan karena model dasar yang dipilihnya membuatnya lebih rumit.
Jan Hudec
18
Kontrol versi terdistribusi bukan "mode". Ini adalah evolusi dari kontrol sumber, seperti kontrol versi bersamaan adalah evolusi atas paradigma penguncian file.
JesperE
6
@MichaelBorgwardt, saya benar-benar melakukannya beberapa kali. Ini jauh lebih mudah daripada dengan subversi, fakta bahwa semuanya lokal banyak membantu, tidak perlu menjelaskan interaksi "klien" dan "server". Alur kerja di git atau hg jauh lebih alami dan intuitif (jika Anda menjauh dari bagian rumit seperti pengeditan riwayat).
SK-logic
19

Perkakas klien belum disebutkan. Anda tentu dapat melakukan semuanya dengan skrip baris perintah tetapi memiliki integrasi GUI dapat menjadi dorongan produktivitas nyata.

Kami kebanyakan bekerja dengan Visual Studio; integrasi ke dalam IDE jelas lebih baik dengan SVN daripada dengan Git sekarang. Ini mungkin berubah di masa depan, tapi saya pasti akan mempertimbangkan ini menjadi keputusan Anda seperti halnya fungsi kontrol versi.

Sama seperti yang lainnya, sistem kontrol versi bukanlah tujuan itu sendiri, hanya alat untuk membawa Anda ke tempat yang Anda tuju. Pilih satu yang akan membawa Anda ke sana tercepat berdasarkan situasi Anda.

njr101
sumber
Ini poin bagus. Saya pikir salah satu alasan mengapa orang lebih suka Git daripada SVN adalah bahwa Git memiliki perkakas CLI yang lebih baik. Tapi ini bisa diimbangi dengan GUI SVN pihak ke-3 yang bagus, seperti TortoiseSVN di Windows.
Euforia
2
Ini adalah salah satu alasan kami memilih Mercurial (dan TortoiseHg) atas Git. Keuntungan dari kontrol versi terdistribusi dan perkakas yang layak dan integrasi IDE.
HappyCat
15

Saya seorang penggemar Git. Baru-baru ini saya harus mengakui bahwa salah satu kelemahan Git adalah bahwa ia mengidentifikasi versi dengan hash yang berlawanan dengan nomor rilis svn. Nomor rilis dapat lebih mudah diteruskan melalui telepon atau semacamnya.

Dan itulah satu-satunya pro yang bisa saya bayangkan. Jika Anda benar-benar ingin bergantung pada fitur itu, Anda dapat memilikinya di Bazaar VCS yang didistribusikan dan / atau terpusat . Di Git ada tag yang dapat melayani tujuan.

Lagi pula saya tidak bisa membayangkan berkembang tanpa beralih cabang cepat, dan menyimpan. Kedua fitur ini sendiri mengalahkan SVN, di mana sejauh yang saya ingat tugas yang sama diperlukan membuat dan memeriksa seluruh pohon ke dalam direktori yang terpisah untuk mencapai tujuan yang sama.

Yang disebut "fitur-fitur canggih dari kontrol versi terdistribusi" datang seiring waktu, dan Anda tidak harus mempelajarinya sejak awal. Jangan takut pada mereka. Mereka ada di sini untuk membantu Anda, bukan untuk menghalangi. Dan tidak ada masalah untuk mengatur repositori pusat untuk DVCS.

Rajish
sumber
1
Ini sebenarnya bisa diperdebatkan, git hanya membutuhkan bagian hash yang cukup besar untuk dapat disatukan, biasanya sesuatu ~ 6 karakter sudah cukup, bukan keseluruhan hash.
TC1
2
Dalam praktiknya, Anda tidak pernah melewatkan hash git. Anda dapat menggunakan awalan unik dari hash, yang biasanya 6-7 karakter.
JesperE
1
@JesperE: Ya, tetapi nomor rilis SVN meningkat secara berurutan dari waktu ke waktu, sementara hash Git, bahkan jika Anda menyingkatnya, mungkin juga acak.
Keith Thompson
2

Dengan SVN Anda dapat dengan mudah checkout bagian dari repositori ke tingkat folder, sedangkan dengan git, Anda mendapatkan seluruh repositori, termasuk semua riwayat.

Tergantung pada situasinya, ini mungkin memiliki beberapa keuntungan bagi SVN

(ini juga memiliki beberapa kelemahan besar seperti sampah ".svn" yang tersembunyi sampai ke pohon folder Anda).

Richard Nichols
sumber
3
catatan: tidak ada .svn sampah sejak v1.7 - sekarang semuanya disimpan dalam satu lokasi.
gbjbaanb
Ini tidak benar - git memungkinkan Anda untuk keluar hanya dari file, tanpa sejarah, dan juga memungkinkan untuk keluar hanya bagian dari file repo - tunggal jika Anda mau. Ini sedikit lebih kompleks daripada svn, tetapi kapasitasnya ada.
Benubird
2

"Jika Anda memiliki tugas yang dapat dilakukan dalam enam jam, lebih baik menulis alat yang melakukannya dalam 20 menit, bahkan ketika membuat alat itu membutuhkan waktu enam jam?"

Kontrol Versi Terdistribusi adalah binatang yang berbeda untuk diatasi. Ini membutuhkan pembelajaran besar untuk setiap pengembang. Jika Anda memiliki buffer untuk mengakomodasi proses pembelajaran untuk setiap pengembang, Anda harus pindah ke sistem kontrol versi terdistribusi yang baik. Setelah fase pembelajaran selesai Kontrol Versi Terdistribusi jauh lebih baik daripada Kontrol Versi Terpusat.

Kontrol Versi Terdistribusi tampaknya menjadi kemungkinan. Itu di sini untuk tinggal untuk waktu yang sangat lama, lebih baik kita beradaptasi lebih cepat daripada nanti. Saya ingat diskusi yang sama ketika SVN masih baru dan orang-orang terbiasa dengan CVS, banyak argumen diberikan untuk tidak menggunakan SVN, tetapi akhirnya SVN menjadi sistem kontrol versi yang paling populer.

Jika perusahaan mapan dengan banyak kode sumber dalam sistem kontrol versi yang ada, pindah ke sistem baru adalah tugas besar, tetapi jika perusahaan kecil atau memulai, pindah ke kontrol versi baru sangat mudah. Tetapi jika Anda tetap menggunakan kontrol versi yang lebih lama (dalam pengaturan baru), Anda akan menemui hambatan di masa depan di mana Anda akhirnya harus merencanakan migrasi kontrol versi.

Saya telah melihat banyak komentar pro SVN, tetapi semuanya cenderung bersifat "SVN tidak buruk" daripada "SVN lebih baik". Jadi saya akan sangat menyarankan Anda memilih Kontrol Versi Terdistribusi (seperti Git) untuk proyek Anda.

EDIT Keuntungan dari GIT dibandingkan SVN

  1. Tidak diperlukan dedicated server Sebenarnya, keduanya dapat digunakan tanpa server.
  2. Dapat melanjutkan pengembangan bahkan tanpa koneksi jaringan.
  3. Manajemen cabang jauh lebih mudah.
  4. Dukungan yang lebih baik dari alat CI seperti Bambu

Seseorang menyebut perkakas (untuk studio visual) sebagai alasan untuk tetap menggunakan SVN. http://gitscc.codeplex.com/ menyediakan dukungan GIT untuk Visual Studio.

Apeirogon Prime
sumber
6
SVN memang menangani file biner lebih baik daripada Git atau Hg.
Nama Palsu
2
"Anda akan menemui hambatan di suatu tempat di masa depan di mana Anda pada akhirnya harus merencanakan migrasi kontrol versi ..." Maaf, saya tidak setuju ini adalah alasan yang baik untuk melakukan perubahan hari ini. Saya telah bekerja di banyak proyek di mana pendekatan ini membuat hal-hal menjadi lebih rumit daripada yang seharusnya dan proyek dibatalkan jauh sebelum itu bisa mengambil keuntungan dari manfaat masa depan itu. Terkadang cukup baik, cukup baik. Tetap berpegang pada YAGNI dan lakukan apa yang dilakukan hari ini. Akan ada cukup waktu untuk khawatir tentang migrasi nanti. Setidaknya Anda masih memiliki proyek.
njr101
2
Once the learning phase is over Distributed Version Control is much better than Centralized Version Control.Saya sepenuhnya tidak setuju dengan ini. Ini mungkin memiliki beberapa manfaat yang dirasakan dalam beberapa keadaan, tetapi sesuatu yang sederhana seperti nomor versi yang dapat dibaca manusia adalah manfaat besar di banyak organisasi.
TZHX
1
@apeirogon - Semuanya tergantung pada apa yang akan Anda masukkan ke dalam repositori. KEPALA saja dari salah satu repositori utama tempat saya bekerja adalah 11,1 GB! Jika saya memilikinya dalam repo Git / bzr / hg, itu mungkin akan membutuhkan 100+ GB.
Nama Palsu
1
Tentu saja, ini karena repo khusus ini penuh dengan file PCB dan model 3D, yang semuanya dalam format biner, dan tidak terlalu efisien ruang. Rekomendasi di sini (Electronics.SE, misalnya untuk orang yang menyimpan file PCB ddesign, dll) sangat berbeda maka jika itu untuk seseorang yang menyimpan kode sumber.
Nama Palsu
1

apakah akan ada alasan khusus untuk menggunakan Subversi hari itu

Terlepas dari dukungan tooling dalam IDE (yang tidak saya gunakan) - tidak juga, tidak. Tentu saja SVN mungkin lebih akrab tetapi itu satu-satunya alasan, dan saya menemukan Hg dan Git sangat mudah (dan sangat cepat) untuk dipelajari.

Ya, ada semua panduan rumit di luar sana yang menggambarkan bagaimana Git sepele setelah Anda memahami bahwa cabang hanyalah endofunctors homeomorfik yang memetakan sub-manifold dari ruang Hilbert. 1

Saya tidak mengerti itu. Tapi tahukah Anda? Itu tidak masalah. Anda tidak perlu tahu hal-hal itu untuk menggunakan Git.

Untuk sebagian besar, Git dan Hg mudah digunakan dan mereka memiliki keunggulan pasti dibandingkan SVN. Gajah di dalam ruangan tentu saja bercabang: cabang hanya bekerja di Git dan Hg. Sebaliknya, pada SVN mereka paling menyakitkan dan paling buruk (menggabungkan banyak kepala).

Tentu saja Anda masih bisa menggunakan SVN. Anda juga masih dapat menggunakan Windows XP. Namun, sebagian besar pengguna yang telah mencoba keduanya setuju bahwa salah satu alternatif jauh lebih unggul.


1 Ya saya mengerti bahwa ini adalah lelucon. Kupikir.

Konrad Rudolph
sumber
Sebuah tutorial Git dengan endofunctors pemetaan homeomorfik submanifold ruang Hilbert? Saya perlu membaca itu! Tapi bukankah ini lebih baik diterapkan pada Darcs, yang ditulis dalam Haskell (yang saya rasa endofunctor merujuk) dan terinspirasi oleh mekanika kuantum (karenanya ruang Hilbert )? Saya benar-benar tidak dapat melihat apa yang harus dilakukan Git dan HG dengan hal-hal ini.
leftaroundabout
@ Leftaroundabout Ini lelucon. Deskripsi itu bahkan tidak akurat (sejauh yang saya tahu). Ini adalah riff pada banyak tutorial yang dimulai dengan "cabang git mudah setelah Anda menyadari bahwa ..." dan kemudian ada metafora khusus domain kompleks setelahnya.
Konrad Rudolph
1
Pernahkah Anda menganggap bahwa semua tutorial yang terlalu rumit itu ada karena suatu alasan? Dan untuk apa itu? Saya tidak pernah mengerti obsesi yang dimiliki cabang DVCS dengan percabangan dan kemudian mengintegrasikan kembali cabang untuk setiap hal kecil. Itu selalu terasa bagi saya seperti solusi dalam mencari masalah. Mengintegrasikan kembali cabang di SVN itu sulit karena itu adalah hal yang sangat bodoh dan secara konseptual salah untuk dilakukan , dan saya benar-benar tidak menemukan argumen yang bermuara pada "produk kami melakukan hal yang salah jadi sangat mudah" sangat persuasif.
Mason Wheeler
1
Sedangkan untuk bekerja pada beberapa perubahan secara paralel, saya akui itu agak menyakitkan, tetapi solusi yang tepat ada rak, yang direncanakan untuk rilis SVN berikutnya. Dan sebagian besar waktu, jika Anda bekerja pada beberapa perubahan pada saat yang sama, (dan terutama jika Anda melakukannya secara konsisten!) Itu adalah bukti dari masalah yang lebih luas yang harus ditangani di tingkat organisasi, tidak diaktifkan dengan yang baru alat. (Lihat di atas, "produk kami membuat melakukan hal yang salah jadi sangat mudah," dan artikel klasik Joel tentang pengalihan tugas manusia.)
Mason Wheeler
3
@KonradRudolph Menggabungkan cabang kembali ke trunk berfungsi dengan baik di versi terbaru SVN. Sudah semakin baik selama beberapa tahun ke tempat yang sangat baik sekarang.
Adam Bruss