Apa yang dilihat orang-orang di sini sebagai kekuatan dan kelemahan relatif Git, Mercurial, dan Bazaar?
Menurut pendapat saya, kekuatan Git adalah desain dasarnya yang bersih dan serangkaian fitur yang sangat kaya. Menurut saya, ini juga merupakan dukungan terbaik untuk repositori multi-cabang dan mengelola alur kerja cabang-berat. Ini sangat cepat dan memiliki ukuran repositori kecil.
Ini memiliki beberapa fitur yang berguna tetapi membutuhkan usaha untuk menggunakannya. Itu termasuk ara pementasan menengah yang terlihat (indeks) antara area kerja dan database repositori, yang memungkinkan resolusi penggabungan yang lebih baik dalam kasus yang lebih rumit, comitting inkremental, dan comitting dengan pohon kotor; mendeteksi penggantian nama dan salinan menggunakan heuristik kesamaan daripada melacaknya menggunakan beberapa jenis id file, yang berfungsi dengan baik dan yang memungkinkan terjadinya kesalahan (anotasi) yang dapat mengikuti pergerakan kode di seluruh file dan tidak hanya penggantian nama secara grosir.
Salah satu kekurangannya adalah dukungan MS Windows tertinggal dan tidak penuh. Kerugian lain yang dirasakan adalah bahwa itu tidak didokumentasikan dengan baik seperti misalnya Mercurial, dan kurang ramah pengguna daripada kompetisi, tetapi berubah.
Menurut pendapat saya, kekuatan Mercurial terletak pada kinerja yang baik dan ukuran repositori yang kecil, dalam dukungan MS Windows yang baik.
Kekurangan utama menurut pendapat saya adalah fakta bahwa cabang lokal (banyak cabang dalam satu repositori) masih warga kelas dua, dan dengan cara yang aneh dan rumit mengimplementasikan tag. Juga cara menangani penggantian nama file adalah suboptimal (tapi migrasi ini telah berubah). Mercurial tidak mendukung penggabungan gurita (dengan lebih dari dua orang tua).
Dari apa yang saya dengar dan baca, keuntungan utama Bazaar adalah dukungan yang mudah untuk alur kerja terpusat (yang juga merugikan, dengan konsep terpusat terlihat di tempat yang tidak semestinya), melacak penggantian nama file dan direktori.
Kerugian utamanya adalah kinerja dan ukuran repositori untuk repositori besar dengan riwayat nonlinier yang panjang (kinerja meningkat setidaknya untuk repositori yang tidak terlalu besar), fakta bahwa paradigma default adalah satu peternakan per repositori (Anda dapat mengaturnya untuk berbagi data, meskipun) , dan konsep terpusat (tapi itu juga dari apa yang saya dengar berubah).
Git ditulis dalam C, skrip shell dan Perl, dan dapat di-script; Mercurial ditulis dalam C (inti, untuk kinerja) dan Python, dan menyediakan API untuk ekstensi; Bazaar ditulis dengan Python, dan menyediakan API untuk ekstensi.
Dalam mempertimbangkan masing-masing satu sama lain dan melawan sistem kontrol versi seperti SVN dan Perforce, masalah apa yang harus dipertimbangkan?
Sistem kontrol versi seperti Subversion (SVN), Perforce, atau ClearCase adalah sistem kontrol versi terpusat . Git, Mercurial, Bazaar (dan juga Darcs, Monotone dan BitKeeper) adalah sistem kontrol versi terdistribusi . Sistem kontrol versi terdistribusi memungkinkan jangkauan alur kerja yang lebih luas. Mereka mengizinkan untuk menggunakan "publikasikan saat siap". Mereka memiliki dukungan yang lebih baik untuk percabangan dan penggabungan, dan untuk alur kerja dengan banyak cabang. Anda tidak perlu mempercayai orang yang memiliki akses komitmen untuk bisa mendapatkan kontribusi dari mereka dengan cara yang mudah.
Dalam merencanakan migrasi dari SVN ke salah satu sistem kontrol versi terdistribusi ini, faktor apa yang akan Anda pertimbangkan?
Salah satu faktor yang mungkin ingin Anda pertimbangkan adalah dukungan untuk inetracting dengan SVN; Git memiliki git-svn, Bazaar memiliki bzr-svn, dan Mercurial memiliki ekstensi hgsubversion.
Penafian: Saya adalah pengguna Git dan kontributor kecil, dan menonton (dan berpartisipasi di) milis git. Saya tahu Mercurial dan Bazaar hanya dari dokumentasi mereka, berbagai diskusi di IRC dan milis, dan posting blog dan artikel yang membandingkan berbagai sistem kontrol versi (beberapa di antaranya terdaftar di halaman Perbandingan Git di Git Wiki).