Ada banyak sistem kontrol versi yang tersedia, termasuk yang open-source seperti Subversion , Git , dan Mercurial , ditambah yang komersial seperti Perforce .
Seberapa baik mereka mendukung proses pengembangan game? Apa masalah menggunakan VCS, berkaitan dengan file non-teks (file biner), proyek besar, dan lain-lain? Apa solusi untuk masalah ini, jika ada?
Untuk pengaturan jawaban, mari kita coba per paket. Perbarui setiap paket / jawab dengan hasil Anda.
Juga, harap cantumkan beberapa detail singkat dalam jawaban Anda, tentang apakah VCS Anda gratis atau komersial, didistribusikan versus terpusat, dll.
Pembaruan : Menemukan artikel yang bagus membandingkan dua VCS di bawah ini - tampaknya, Git adalah MacGyver dan Mercurial adalah Bond . Yah, saya senang itu diselesaikan ... Dan penulis memiliki kutipan yang bagus di akhir:
Tidak apa-apa untuk menyebarkan agama kepada mereka yang belum beralih ke VCS yang didistribusikan, tetapi mencoba mengubah pengguna Git menjadi Mercurial (atau sebaliknya) adalah buang-buang waktu dan energi semua orang.
Terutama karena musuh nyata Git dan Mercurial adalah Subversion . Sial, dunia kode-makan-kode di luar sana di FOSS-land ...
sumber
Jawaban:
Git
Baru-baru ini saya berada di kereta musik Git (saya telah menggunakan SVN dan Mercurial). Sejauh ini saya sangat menyukai apa yang saya dapatkan dengan Git. Ini jauh dari rasa sakit untuk setup dan alat pengembangan lebih banyak mulai mengadopsi menggunakannya.
Ini adalah sistem kontrol versi terdistribusi. Ini memungkinkan kami untuk memiliki area seperti batang independen kami sendiri. Saya dapat bekerja di area saya sendiri dan mengundang Anda untuk melihat perubahan dengan sangat mudah. Saya dapat memutar balik di ruang saya sendiri tanpa memperbaiki repo pusat. Saya dapat melakukan, bercabang, dan melakukan semua yang dapat Anda lakukan dengan SVN secara lokal. Saya sangat suka memiliki kontrol ini.
Dengan SVN, Anda memerlukan akses ke repo Anda untuk dapat melakukan. Bagaimana jika Anda sedang di jalan atau di kafe tanpa internet? Tidak baik.
Tentu, SVN jauh lebih sederhana untuk dipelajari, tetapi saya pikir keuntungan dari kontrol sumber terdistribusi lebih besar daripada fakta bahwa ia memiliki sedikit kurva belajar.
Saya juga suka itu lebih pintar tentang penggabungan.
Kelemahan utama dari GIT adalah ia menyimpan seluruh sejarah secara lokal. (Ya, Anda dapat melakukan operasi untuk mengurangi itu, tapi itu adalah perilaku default). Sama sekali bukan masalah untuk file sumber, tetapi jika Anda memiliki proyek besar dengan gigabytes data aset, itu menjadi masalah dengan cepat. Dalam pengalaman saya saat ini, saya akan merekomendasikan GIT hanya untuk repo yang lebih kecil atau hanya sumber.
Jika Anda masih penasaran dengan GIT, lihat http://thkoch2001.github.io/whygitisbetter/ untuk beberapa informasi / metrik yang baik. Lihat juga https://git.wiki.kernel.org/index.php/GitSvnComparsion
sumber
Lincah
Fitur utama:
Sehubungan dengan penggunaan file non-teks, versi terakhir Mercurial (> = 2.0) menyediakan ekstensi file besar secara default :
Ada ekstensi lain yang menyediakan solusi serupa seperti ekstensi bigfiles yang memungkinkan Anda menyimpan aset Anda dalam repo Mercurial yang sama, tetapi hanya mengambil binari yang Anda butuhkan saat Anda membutuhkannya.
Saya tidak mengetahui adanya masalah sehubungan dengan proyek besar di luar yang terkait dengan memiliki file biner besar. Proyek Python adalah proyek besar dan menggunakan Mercurial .
Joel Spolsky telah menulis tutorial mini tentang cara menggunakan Mercurial di Subversion re-education
sumber
svn:needs-lock
, dan karena tidak ada cara untuk mengetahui siapa yang bekerja secara lokal pada file apa , Anda kembali membagikan mangkuk di sekitar tim, secara harfiah (Anda tidak boleh mengedit tanpa mangkuk di meja Anda). Ekstensi BigFiles atau tidak, VCS ini tidak berguna untuk file biner tanpa solusi praktis untuk ini.Terpaksa
Perforce (sumber komersial / tertutup, terpusat) adalah standar industri karena sejumlah alasan.
Yang mengatakan, itu jelas sangat menyakitkan hampir setiap hari bahwa Perforce tidak merasa posisi mereka di industri terancam. Alat visual mereka, termasuk P4V dan P4SCC (berintegrasi dengan Visual Studio) lambat dan bermasalah, dengan yang terakhir diketahui membekukan Visual Studio untuk kesenangan semata. AnkhSVN jauh di depan Perforce.
Komentar oleh xan: Perlu dicatat bahwa alat penggabung mereka, P4Merge (digunakan untuk pembedaan dan penggabungan) sangat bagus dan jauh lebih unggul daripada yang dimiliki Tortoise Merge. Yang mengejutkan, komponen ini tersedia secara gratis sebagai bagian dari paket P4 Visual Tools.
Komentar oleh slicedlime: Kelemahan lain dari Perforce adalah bahwa bercabang di dalamnya cenderung sangat menyakitkan, terutama jika Anda memiliki pohon besar. Hampir setiap vcs lainnya lebih baik dalam hal percabangan dan penggabungan. Ini biasanya harga kecil untuk membayar keuntungan di atas sekalipun.
Komentar oleh roe: Perforce sangat cerewet. Tidak banyak yang terjadi tanpa melibatkan server. Terutama, Anda memerlukan server untuk melakukan open-for-edit, yang berarti Anda harus melewati beberapa simpang jika Anda ingin memutus koneksi ke server.
Komentar oleh jrista: Sebagai pengguna harian Perforce selama lebih dari dua tahun sekarang, dengan tim pengembangan dan rekayasa mutu yang berkualitas lebih dari 100 orang, saya menjadi sangat akrab dengannya. Walaupun ini adalah sistem kontrol sumber yang layak, ia memiliki kekurangan bahwa mereka yang mengevaluasi sistem SCC harus menyadari:
sumber
Subversi
Sumber terbuka, terpusat
File blender - Saya tidak sepenuhnya yakin apakah file .blend adalah biner (terlihat seperti itu), tapi saya tidak punya masalah menambahkannya ke Subversion. Setelah melakukan beberapa percobaan, peningkatan ukuran file untuk file yang diubah muncul nominal, jadi itu tidak hanya menyalin di seluruh file.
Proyek-proyek besar - Berhasil, meskipun bisa aneh. Ini pasti dapat menangani repositori setidaknya 5,5 GB (ukuran total dir repositori di server; sebagian besar aset biner).
Data yang Digandakan pada Klien - Subversi menyimpan salinan duplikat dari setiap file di ruang kerja pengguna sebagai salinan asli. Keuntungan dari ini adalah Anda dapat melakukan diff atau mengembalikan tanpa kembali ke server. Kerugiannya adalah 10 gig file kerja Anda membutuhkan 20 gig ruang disk.
Daftar abaikan adalah properti dari direktori (sederhana dengan gui, mengganggu pada baris perintah).
Subversion memungkinkan penguncian file / aset - yang sangat membantu jika banyak artis dan desainer bekerja pada file yang sama.
Eksternal adalah cara terbaik untuk menangani kode bersama (mis. Perpustakaan atau basis) antar proyek.
sumber
AlienBrain
Dari Avid :
Saya tidak punya pengalaman dengan AlienBrain, dan hanya mendengarnya dari buku Game Coding Lengkap oleh Mike McShaffry. Dia tampaknya sangat memikirkannya, namun:
Tentu saja dia juga menggambarkannya sebagai:
sumber
Server Yayasan Tim
dari Microsoft
Saya telah menggunakan TFS secara luas pada proyek-proyek simulator MILSPEC, dan itu cukup bagus. Mungkin bukan yang terbaik jika Anda menggunakan Mac, meskipun ada plugin gerhana hari ini. Versi cloud-host mendukung repositori git untuk back-end sumber-kontrol.
Ini gratis untuk hingga lima pengguna di Visual Studio Online (memungkinkan sumber tertutup; tidak ada batasan ukuran repositori), yang dihosting di cloud. Jika Anda ingin meng-host-nya secara lokal, harganya bisa mahal.
Hal yang paling saya sukai tentang hal ini adalah fitur manajemen rekayasa perangkat lunak, dan fakta bahwa ia menangani file besar dan file biner dengan cukup bahagia.
sumber