Catatan: Lihat "EDIT" untuk jawaban pertanyaan saat ini
Pertama-tama, baca Subversion Re-education oleh Joel Spolsky. Saya pikir sebagian besar pertanyaan Anda akan dijawab di sana.
Rekomendasi lain, pembicaraan Linus Torvalds di Git: http://www.youtube.com/watch?v=4XpnKHJAok8 . Yang lain ini mungkin juga menjawab sebagian besar pertanyaan Anda, dan itu cukup menghibur.
BTW, sesuatu yang saya temukan cukup lucu: bahkan Brian Fitzpatrick & Ben Collins-Sussman, dua pencipta subversi asli mengatakan dalam satu google talk "maaf tentang itu" merujuk pada subversi yang lebih rendah daripada lincah (dan DVCS pada umumnya).
Sekarang, IMO dan secara umum, dinamika tim berkembang lebih alami dengan DVCS apa pun, dan manfaat yang luar biasa adalah Anda dapat melakukan offline karena itu menyiratkan hal-hal berikut:
- Anda tidak bergantung pada server dan koneksi, yang berarti waktu lebih cepat.
- Tidak menjadi budak ke tempat-tempat di mana Anda bisa mendapatkan akses internet (atau VPN) hanya untuk dapat melakukan.
- Setiap orang memiliki cadangan segalanya (file, riwayat), bukan hanya server. Berarti siapa pun bisa menjadi server .
- Anda dapat melakukan secara kompulsif jika perlu tanpa mengacaukan kode orang lain . Komit bersifat lokal. Anda tidak menginjak kaki satu sama lain saat melakukan. Anda tidak merusak bangunan atau lingkungan orang lain hanya dengan melakukan.
- Orang-orang tanpa "akses komit" dapat melakukan (karena melakukan dalam DVCS tidak berarti mengunggah kode), menurunkan penghalang untuk kontribusi, Anda dapat memutuskan untuk menarik perubahan mereka atau tidak sebagai integrator.
- Ini dapat memperkuat komunikasi alami karena DVCS menjadikan ini penting ... dalam subversi yang Anda miliki adalah balapan komit, yang memaksa komunikasi, tetapi dengan menghalangi pekerjaan Anda.
- Kontributor dapat bergabung dan menangani penggabungan mereka sendiri, yang berarti lebih sedikit pekerjaan untuk integrator pada akhirnya.
- Kontributor dapat memiliki cabang sendiri tanpa mempengaruhi orang lain (tetapi bisa membaginya jika perlu).
Tentang poin Anda:
- Penggabungan neraka tidak ada di DVCSland; tidak perlu ditangani. Lihat poin selanjutnya .
- Dalam DVCS, semua orang mewakili "cabang", artinya ada penggabungan setiap kali perubahan ditarik. Cabang bernama adalah hal lain.
- Anda dapat terus menggunakan integrasi berkelanjutan jika Anda mau. Tidak perlu IMHO, mengapa menambah kompleksitas ?, terus pengujian Anda sebagai bagian dari budaya / kebijakan Anda.
- Mercurial lebih cepat dalam beberapa hal, git lebih cepat dalam hal lain. Tidak benar-benar hingga DVCS secara umum, tetapi untuk implementasi khusus mereka AFAIK.
- Setiap orang akan selalu memiliki proyek penuh, bukan hanya Anda. Hal terdistribusi berkaitan dengan bahwa Anda dapat melakukan / memperbarui secara lokal, berbagi / mengambil dari luar komputer Anda disebut mendorong / menarik.
- Sekali lagi, baca Pendidikan Ulang Subversion. DVCS lebih mudah dan lebih alami, tetapi mereka berbeda, jangan mencoba untuk berpikir bahwa cvs / svn === dasar dari semua versi.
Saya berkontribusi beberapa dokumentasi untuk proyek Joomla untuk membantu mengkhotbahkan migrasi ke DVCS, dan di sini saya membuat beberapa diagram untuk menggambarkan terpusat vs didistribusikan.
Terpusat
Didistribusikan dalam praktik umum
Didistribusikan secara maksimal
Anda lihat di diagram masih ada "repositori terpusat", dan ini adalah salah satu argumen favorit penggemar versi terpusat: "Anda masih terpusat", dan tidak, Anda tidak, karena repositori "terpusat" hanyalah repositori Anda semua setuju (mis. repo github resmi), tetapi ini dapat berubah kapan saja Anda butuhkan.
Sekarang, ini adalah alur kerja khas untuk proyek sumber terbuka (misalnya proyek dengan kolaborasi besar-besaran) menggunakan DVCS:
Bitbucket.org agak setara dengan github untuk mercurial, ketahuilah bahwa mereka memiliki repositori pribadi tanpa batas dengan ruang tak terbatas, jika tim Anda lebih kecil dari lima, Anda dapat menggunakannya secara gratis.
Cara terbaik Anda dapat meyakinkan diri Anda untuk menggunakan DVCS adalah dengan mencoba DVCS, setiap pengembang DVCS berpengalaman yang telah menggunakan svn / cvs akan memberi tahu Anda bahwa itu sepadan dan bahwa mereka tidak tahu bagaimana mereka bertahan sepanjang waktu tanpa itu.
EDIT : Untuk menjawab mengedit kedua saya hanya bisa menegaskan kembali bahwa dengan DVCS Anda memiliki alur kerja yang berbeda, saya akan menyarankan Anda untuk tidak mencari alasan untuk tidak mencobanya karena praktik terbaik , rasanya seperti ketika orang berpendapat bahwa OOP tidak diperlukan karena mereka dapat menyiasati pola desain yang kompleks dengan apa yang selalu mereka lakukan dengan paradigma XYZ; Anda bisa mendapatkan keuntungan.
Cobalah, Anda akan melihat bagaimana bekerja di "cabang pribadi" sebenarnya merupakan pilihan yang lebih baik. Salah satu alasan saya dapat mengatakan tentang mengapa yang terakhir adalah benar adalah karena Anda kehilangan rasa takut untuk berkomitmen , memungkinkan Anda untuk melakukan kapan saja Anda mau dan bekerja dengan cara yang lebih alami.
Mengenai "penggabungan neraka", Anda mengatakan "kecuali kami sedang bereksperimen", saya katakan "bahkan jika Anda bereksperimen + memelihara + bekerja di v2.0 yang dirubah pada saat yang sama ". Seperti yang saya katakan sebelumnya, menggabungkan neraka tidak ada, karena:
- Setiap kali Anda berkomitmen Anda menghasilkan cabang yang tidak disebutkan namanya, dan setiap kali perubahan Anda memenuhi perubahan orang lain, terjadi penggabungan alami.
- Karena DVCS mengumpulkan lebih banyak metadata untuk setiap komit, lebih sedikit konflik terjadi selama penggabungan ... sehingga Anda bahkan dapat menyebutnya sebagai "penggabungan cerdas".
- Saat Anda bertemu konflik gabungan, inilah yang bisa Anda gunakan:
Juga, ukuran proyek tidak masalah, ketika saya beralih dari subversi saya sebenarnya sudah melihat manfaatnya saat bekerja sendiri, semuanya terasa benar. The changesets (tidak persis revisi, tapi serangkaian tertentu perubahan untuk file tertentu Anda termasuk komit, terisolasi dari negara bagian basis kode) membiarkan Anda memvisualisasikan apa yang Anda maksud dengan melakukan apa yang Anda lakukan untuk kelompok tertentu file, bukan seluruh basis kode.
Mengenai cara kerja perubahan dan peningkatan kinerja. Saya akan mencoba mengilustrasikannya dengan contoh yang ingin saya berikan: proyek mootools beralih dari svn diilustrasikan dalam grafik jaringan github mereka .
Sebelum
Setelah
Apa yang Anda lihat adalah pengembang dapat fokus pada pekerjaan mereka sendiri saat melakukan, tanpa takut melanggar kode orang lain, mereka khawatir akan melanggar kode orang lain setelah mendorong / menarik (DVCS: komit pertama, kemudian tekan / tarik, kemudian perbarui ) tetapi karena penggabungan lebih cerdas di sini, mereka sering tidak pernah melakukan ... bahkan ketika ada konflik penggabungan (yang jarang terjadi), Anda hanya menghabiskan 5 menit atau kurang memperbaikinya.
Rekomendasi saya kepada Anda adalah untuk mencari seseorang yang tahu cara menggunakan mercurial / git dan mengatakan kepadanya untuk menjelaskannya kepada Anda secara langsung. Dengan menghabiskan sekitar setengah jam dengan beberapa teman di baris perintah saat menggunakan lincah dengan desktop kami dan akun bitbucket menunjukkan kepada mereka bagaimana untuk menggabungkan, bahkan membuat konflik bagi mereka untuk melihat bagaimana cara memperbaikinya dalam jumlah waktu yang konyol, saya dapat menunjukkan mereka kekuatan sebenarnya dari sebuah DVCS.
Akhirnya, saya akan merekomendasikan Anda untuk menggunakan bitbucket + mercurial daripada git + github jika Anda bekerja dengan windows guys. Mercurial juga sedikit lebih sederhana, tetapi git lebih kuat untuk manajemen repositori yang lebih kompleks (misalnya git rebase ).
Beberapa bacaan tambahan yang disarankan: