Ini lebih merupakan pertanyaan diskusi daripada upaya yang sebenarnya untuk menentukan yang "terbaik", karena itu jelas berbeda dengan kebutuhan organisasi. Saya lebih ingin tahu tentang argumen yang mendukung sistem yang berbeda di seluruh kategori (terpusat vs terdistribusi, terbuka vs berpemilik, dll).
Jadi, apa yang Anda pikirkan adalah sistem kontrol versi terbaik?
version-control
Fishtoaster
sumber
sumber
Jawaban:
Lincah
Karena kemampuannya yang canggih untuk bercabang dan menggabungkan kode, ini adalah yang terbaik yang saya gunakan. Seluruh paradigma DVCS sangat masuk akal. Saya belum pernah menggunakan Git, tapi saya kira itu memenuhi syarat juga.
sumber
Git
Git luar biasa, dan saya terutama akan merekomendasikannya kepada siapa pun yang bekerja pada proyek-proyek open source: jauh lebih mudah untuk menyumbangkan perubahan kecil, satu kali untuk sebuah proyek di Git, terutama jika itu dihosting di GitHub, daripada berurusan dengan e- mengirimkan patch tentang dengan SVN.
Satu peringatan besar bagi pengguna Windows: Git's Windows tools, meskipun pasti bisa digunakan, tidak cukup untuk menggaruk. Ketika saya terpaksa menggunakan Windows untuk sementara waktu, saya mencoba antarmuka Windows Mercurial dengan alat integrasi Hg-Git sehingga saya bisa menggunakan repositori Git saya, dan ternyata jauh lebih mudah digunakan.
sumber
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
sumber
Kutipan berikut dari Q4TD cukup meringkaskannya bagi saya:
Juga, hgsubversion membuat klien subversi yang cukup bagus untuk Linux (di mana saya biasanya menggunakan baris perintah, tidak seperti Windows di mana saya biasanya menggunakan TortoiseSVN). Keuntungan terbesar: tidak ada
.svn
sub-folder di setiap folder, hanya.hg
di tingkat atas.Pembaruan: Menanggapi permintaan Alex di komentar untuk "katakan lebih banyak tentang mengapa git tidak bekerja untuk Anda, dan bagaimana Mercurial bekerja lebih baik":
Saya tidak akan mengatakan bahwa Git tidak bekerja untuk saya, tetapi Murcurial berfungsi lebih baik IMO.
Singkatnya, ini Mercurial:
dan ini adalah Git:
Dan saya menegaskan bahwa Mercurial akan melakukan semua hal yang sebagian besar pengembang perlu lakukan, tanpa harus mencari manual untuk mencari tahu bagaimana melakukan hal-hal sehari-hari.
Memang, saya hanya menggunakan Git sesekali, tetapi komunitas pemrograman telah membahas bahasa seperti Ruby dan Python, sebagian, untuk keringkasan dan keanggunan mereka, sedangkan Git terasa seperti unta yang dirancang oleh komite unta.
Bah, sekarang lihat apa yang sudah kamu lakukan? Kata-kata kasar di semua tempat. Bergerak, tidak ada yang melihat ... tidak ada yang melihat ...
Pembaruan 2: Dan tweet lain yang baru saja saya jumpai:
sumber
Saya tidak memiliki sistem kontrol versi "terbaik", melainkan paradigma VCS terbaik tunggal.
Saya telah menggunakan beberapa sistem kontrol versi terpusat yang berbeda dan beberapa sistem kontrol versi terdistribusi yang berbeda. Dan saya dapat mengatakan tanpa ragu-ragu bahwa tidak ada seorang pun yang dapat menyebabkan CVCS pada diri mereka sendiri.
Saya tidak peduli DVCS mana yang Anda pilih (favorit saya adalah Git), tapi tolong bantu diri Anda dan gunakan DVCS. Untuk satu: Anda akan jauh lebih fleksibel. DVCS dapat dengan mudah mengemulasi alur kerja CVCS (tidak pernah memotong repositori, dan memperlakukan repositori lokal Anda hanya sebagai chache alih-alih garpu independen), sedangkan sebaliknya tidak mungkin dilakukan. Dan sementara secara logis, melakukan emulasi ini harus membawa beberapa overhead (dan memang itu), saya masih merasa lebih mudah untuk digunakan (belum lagi lebih banyak performan karena caching lokal) daripada CVCS yang saya gunakan.
sumber
Tidak dapat mengatakan bahwa saya telah menemukan perangkat lunak kontrol versi Terbaik, tetapi saya dapat memberitahu Anda untuk menjauh dari VSS dan MKS. Keduanya adalah anjing yang harus dihindari bagaimanapun caranya.
sumber
Saya tidak akan mengatakan yang terbaik, tetapi satu dengan fitur dan konsep yang sangat menarik.
Fossil adalah kontrol versi terdistribusi, pelacakan bug, dan proyek wiki yang dibangun di atas basis data SQLite sebagai repositori.
sumber
Server Yayasan Tim
Karena:
sumber
Saya telah menggunakan banyak sistem kontrol versi dalam sejarah panjang saya:
Meskipun pasangan adalah kengerian, kebanyakan "baik-baik saja". Mereka tidak menghalangi saya. Selama alat tidak membuat hidup saya jauh lebih sulit , saya tidak keberatan.
Hal yang nyata adalah memahami kekuatan dan kelemahan masing-masing. Memahami lingkungan target:
Joel juga keluar dengan pengamatan penting: Pelajari alat dan model penggunaan yang sebenarnya. Dia berjuang sekuat tenaga untuk membuat Mercurial berperilaku seperti Subversion.
sumber
Satu sistem yang lebih baru yang kami gunakan di kantor saya adalah Plastic SCM (http://www.plasticscm.com/). Ini bekerja sangat baik untuk tim kecil kami dan memberi kami kontrol besar atas setiap aspek manajemen sumber.
sumber
SCCS .
Atau, jika Anda kebetulan belum pernah hidup di gua selama 38 tahun terakhir, CSSC .
Serius, perusahaan saya menggunakan TeamWare , yang merupakan semacam pseudo DVCS berdasarkan SCCS.
Tidak, saya tidak bercanda.
Sun beralih ke mercurial dari TeamWare hanya beberapa tahun yang lalu. Sekarang Anda harus mengerti mengapa Java tampak bergerak sangat lambat.
sumber
MPW: Yah, saya tidak bisa benar-benar memberikan ulasan meskipun saya berusaha.
Ini kembali ketika saya belajar pemrograman di sekolah menengah, dan satu-satunya kompiler C ++ yang benar-benar gratis yang bisa didapat adalah Macintosh Programming Workbench, yang saya simpan di disk zip dan muncul ke mana pun Performa tersedia di lab.
MPW datang dengan lusinan alat (tidak ada yang resedit, itu unduhan terpisah), dan salah satunya adalah utilitas kontrol versi. Itu muncul membuka jendela kecil dengan satu baris teks, dan Anda harus drag and drop proyek atau file Anda ke dalamnya. Tidak ada dokumentasi yang bisa saya temukan, tidak biasa mengingat semua yang lain sepertinya memiliki dokumen yang bagus, jadi saya tidak pernah tahu bagaimana menggunakannya.
Itu kuas pertama saya dengan VC, dan yang terakhir cukup lama. Sekarang saya menggunakan git untuk semuanya.
sumber
RCS - Sistem Kontrol Revisi
Pengodean tunggal menjadi sangat mudah.
sumber
Bukan ClearCase, setidaknya untuk sistem Unix / Linux (mungkin dengan Windows installer lebih mudah). Lebih mudah bagi saya untuk mempelajari alat baru, Perforce, daripada memutakhirkan server ClearCase kami.
Saat ini saya menggunakan Perforce di tempat kerja dan saya menyukainya tetapi saya tidak tahu apakah itu yang terbaik. Menyiapkan lingkungan baris perintah dan Server Perforce agak canggung, tetapi menggunakan Visual Client cukup mudah. Saya suka berpikir para pengguna memiliki waktu yang cukup mudah dengannya untuk tugas sehari-hari; hanya saja pengaturan awal membutuhkan beberapa pekerjaan.
sumber
Saya telah menggunakan Visual SourceSafe dan membencinya, tapi itu lebih baik daripada tidak sama sekali, tetapi tidak banyak. Selama beberapa tahun terakhir, menggunakan sesuatu yang disebut QCVS oleh Qumasoft.com ditulis, dimiliki dan didukung oleh Jim Voris sang programmer. Gui sederhana, harga murah, dukungan bagus.
Lakukan saja pekerjaan itu.
sumber