Saya mencari dan tidak dapat menemukan alasan bisnis mengapa sistem git / mercurial / bazzr lebih baik daripada sistem terpusat (subversi, terpaksa).
Jika Anda mencoba menjual DVCS kepada orang non-teknis, argumen apa yang akan Anda berikan untuk DVCS yang meningkatkan laba .
Saya akan segera mengirimkan git ke manajer saya, itu akan memakan waktu beberapa lama untuk mengubah repositori subversi dan beberapa biaya dalam membeli lisensi smartgit.
Sunting Saya mencoba menjadikan pertanyaan ini menjadi diskusi umum tentang terpusat vs terdesentralisasi, tetapi mau tidak mau itu telah berubah menjadi git vs subversi. Tentunya ada sistem terpusat yang lebih baik daripada subversi.
git-svn
memenuhi kebutuhan Anda?Jawaban:
Hmm, setelah menjadi manajer, saya memiliki dua reaksi "spontan" untuk ini:
Sebenarnya, saya bukan negatif - saya pikir mungkin ada kasus yang harus dibuat (tergantung pada keadaan) tetapi jika kasusnya hanya bahwa git "lebih baik" daripada subversi maka Anda tidak benar-benar memilikinya.
Anda juga harus dapat menghitung kekurangannya - Anda telah mengidentifikasi overhead migrasi dan menginstal ulang - apa lagi yang menjadi masalah? mis. Apa yang terjadi pada repositori Anda yang bagus, terpusat, dan didukung? Bagaimana Anda mengintegrasikan dengan server build integrasi berkelanjutan Anda (jika Anda tidak memilikinya, lupakan git dan lakukan sortir dulu). Oh keamanan dan pelacakan - SVN berjalan dengan login dan izin yang tepat.
Menurut saya, manfaatnya adalah fleksibilitas, penggabungan yang lebih baik, kemampuan untuk melakukan komitmen lokal tanpa merusak build dan sebagainya. Kerugiannya adalah kurangnya kontrol dan fleksibilitas yang sama.
Mungkin yang ingin Anda lakukan adalah menjalankan git secara lokal ke mesin Anda sebagai klien subversi yang "lebih baik" (Saya melihat ini menggunakan mercurial).
Hmm, mungkin seluruh jawaban ini benar-benar komentar? Anda perlu membuat kasing Anda di sini (dalam pertanyaan) untuk git over subversi (di lingkungan Anda) untuk mengetahui apakah kami dapat membantu Anda mengidentifikasi kasing bisnis.
FWIW, saya tahu bahwa seseorang dapat dengan mudah menunjuk contoh spesifik dari repositori untuk menjadi sumber trunk / referensi dan lebih jauh bahwa itulah cara seseorang menghubungkan server build-nya - perbedaannya adalah dengan DVCS yang lebih merupakan keputusan administratif daripada sesuatu yang melekat dalam arsitektur.
sumber
Saya akan mengatakan percabangan dan penggabungan yang cepat dan tidak menyakitkan akan memungkinkan pengembang menjadi lebih produktif dengan kode mereka, karena setiap fitur baru dapat bercabang, kemudian digabungkan. Membuat proses pengembangan berjalan jauh lebih lancar. Juga, sifat terdistribusi, akan memungkinkan setiap pengembang untuk memiliki seluruh salinan kode, sehingga tidak ada kekhawatiran kegagalan server terpusat mencatat semua kode Anda. Mungkin ada lebih banyak alasan, tetapi keduanya adalah alasan utama saya untuk menggunakan Git.
sumber
Saya berasumsi Anda dapat membuat kasus untuk kontrol versi meningkatkan produktivitas (dan dengan demikian keuntungan) bahkan ketika pengembang bekerja sendiri.
DVCS yang baik mengakui manfaat produktivitas yang sama bahkan ketika bekerja sebagai bagian dari tim - setiap pengembang bisa mendapatkan semua manfaat dari bekerja dengan kontrol versi - mereka dapat sering melakukan komitmen, kembalikan, bermain-main dengan hal-hal, dll. - tanpa khawatir tentang konflik dengan apa yang dilakukan pengembang lain sampai mereka siap untuk mendorong perubahan mereka.
sumber
Hal-hal ini memungkinkan Anda bekerja lebih efisien, baik solo maupun dalam tim. Bekerja lebih efisien = waktu pengembangan lebih cepat = waktu lebih cepat ke pasar = keuntungan.
sumber
Maafkan saya karena menautkan ke blog saya sendiri, tetapi saya telah menulis artikel tentang hal ini:
Jangan ragu untuk downvote jika Anda merasa itu tidak relevan.
Singkatnya, DVCS membuat model percabangan mudah yang dapat membuat kelompok besar pengembang tidak saling melangkah, yang meningkatkan produktivitas dan kualitas bangunan harian Anda. Bagian kolaborasi yang berantakan dari kontrol versi dapat dilakukan di repo lokal, meninggalkan repositori pusat Anda dan berkualitas lebih tinggi. Juga, keputusan tentang kapan harus bercabang dapat memiliki efek besar pada efisiensi, misalnya jika satu departemen siap untuk mulai bekerja pada 2.0 ketika 1.0 masih sedang dibersihkan oleh yang lain. DVCS memungkinkan keputusan itu dibuat di tingkat lokal alih-alih oleh komite.
sumber
HEAD~1
,HEAD~2
, dll di git. Sangat jarang Anda membutuhkan hash yang sebenarnya, tetapi ini adalah hal pertama yang Anda pelajari di git dan selalu ada di wajah Anda. Menyembunyikan itu dari pengguna kecuali Anda benar-benar membutuhkannya adalah salah satu alasan bzr lebih ramah pemula.Argumen saya untuk DVCS adalah ini:
Percabangan tidak rusak, yang menyebabkan lebih sedikit gesekan dalam mengembangkan fitur dan menjaga produk yang ada ditambal. Gesekan membutuhkan uang dalam waktu.
Pindah ke sistem modern lebih baik menarik pengembang mutakhir, yang akan mengarah pada budaya produk yang lebih baik, yang memungkinkan bisnis untuk menjual lebih banyak produk.
Komitmen non-jaringan lebih cepat , memungkinkan pengembang untuk sering melakukan, yang mengarah pada deteksi bug dan analisis yang baik.
Intinya, ini tentang mengurangi gesekan. Ada istilah untuk ini: Muda . Semakin banyak gesekan, semakin banyak rasa sakit untuk melakukan sesuatu. Semakin banyak rasa sakit, semakin sedikit yang dilakukan, semakin sedikit keuntungan.
sumber
Saya minta maaf jika saya sombong, tetapi izinkan saya untuk menempatkan kasus bisnis tanpa syarat yang tidak pasti:
SVN membuat hidup para pengembang sengsara . Dan itu membuat bisnis perangkat lunak sengsara.
... dengan cara yang tidak akan disadari banyak orang sebelum mereka mulai menggunakan DVCS. Ini adalah kasus bisnis paling penting yang mungkin dapat dibuat . Mengapa? Nah, dibandingkan dengan biaya untuk menemukan dan mempertahankan pengembang yang baik, biaya untuk beralih ke DVCS hampir tidak ada .
Pertimbangkan yang berikut ini:
push
ataupull
mengoperasikan. Ini berarti bahwa perintah non-sepele lambat . Apa yang Anda lakukan ketika sebuah perintah mengambil selamanya? Saya pribadi mencari berita programmer atau hacker sementara saya menunggu. Sederhananya, DVCSes memungkinkan programmer untuk fokus melakukan apa yang mereka sukai: menulis perangkat lunak perusahaan .Apa artinya semua ini? Saya belum pernah bertemu pengembang yang diberi DVCS percobaan jujur yang akan memilih SVN sesudahnya. Jika saya bisa membuat satu lagi pernyataan yang menyebalkan dan berani, SVN adalah "kejahatan yang perlu" yang memaksa para diri mereka untuk menggunakannya. Git adalah alat yang membuat pengembang lebih produktif dan lebih bahagia .
(Saya harus menunjukkan bahwa pernyataan tebal adalah yang khusus Anda harus fokus pada. Sisanya hanya memberikan konteks.)
sumber
Satu-satunya hal yang bisa saya pikirkan adalah git bekerja tanpa koneksi jaringan. Segala sesuatu yang lain bahkan seringkali sulit dijual kepada pengguna teknis yang menggunakan subersi atau terpaksa beberapa waktu.
sumber
Perbedaannya muncul ketika ada masalah
Kami beralih ke git 6 bulan lalu setelah porting repositori lama kami.
Sejauh ini saya telah menemukan yang berikut, setelah sedikit bereksperimen:
percabangan dan penggabungan hampir tidak menyakitkan. Ini membuatnya lebih mudah untuk bekerja pada fitur-fitur yang terpisah dan perbaikan bug tanpa menginjak kaki masing-masing. Ini juga membuatnya sangat mudah untuk menerapkan perbaikan bug yang diberikan di tempat lain juga.
lebih kuat menurut desain - Anda tidak mengandalkan 100% pada server pusat yang tersedia, dan jika tidak, Anda dapat menggunakan mempromosikan klon apa pun untuk sementara sebagai pengganti panas. Ini menghapus titik kegagalan penting - jika server SVN turun karena alasan apa pun, tidak ada yang dapat melakukan pekerjaan SVN. Jika repositori central git turun karena alasan apa pun, Anda masih dapat bekerja dan mendorong / menarik secara lokal untuk memastikan bahwa komit direplikasi. Anda bahkan dapat memiliki beberapa repositori luar-situs untuk tujuan ini.
interaksi repositori disederhanakan. Untuk CVS Anda pada dasarnya membutuhkan akses setiap saat kapan pun Anda membutuhkan informasi. Untuk git seluruh repositori tersedia secara lokal memungkinkan banyak hal berjalan lebih cepat.
Jadi, manfaatnya tidak sebanyak dalam rutinitas sehari-hari, tetapi sangat jelas saat Anda memiliki sesuatu yang tidak berfungsi dengan benar!
Oleh karena itu, saya sarankan untuk kasus bisnis Anda, lihat apa yang akan Anda lakukan ketika bencana melanda ...
sumber
Kemudahan bercabang dan menggabungkan adalah alasan paling konkret, tetapi untuk meyakinkan seseorang Anda harus memberi mereka contoh nyata tentang bagaimana hal itu meningkatkan banyak hal.
Katakanlah Anda memiliki beberapa programmer yang bekerja pada peningkatan kinerja untuk suatu aplikasi, dan mereka sedang dalam tahap percobaan dan tidak tahu apakah kode yang mereka tulis akan pernah menjadi bagian dari cabang utama / utama. Namun, mereka perlu sering berbagi kode satu sama lain dan mencoba ide-ide yang mungkin buntu. Bagaimana Anda mengelola percabangan dan penggabungan yang sering terjadi seperti itu? Jawaban singkatnya adalah Anda tidak. Dengan DVD sangat mudah, dan programmer dapat dengan cepat mencoba ide-ide baru di cabang dan berbagi dengan yang lain sebelum memutuskan apakah ide itu akan bertahan.
sumber
Kasus bisnis untuk membuang SubVersion adalah dukungan percabangan merupakan penghalang untuk stabilisasi dan pemeliharaan produk. Jika Anda perlu merilis produk dan kemudian melanjutkan pengembangan Anda memerlukan cabang. Dengan subversi, pengembang tidak akan menggunakan percabangan dengan baik, sehingga Anda akan gagal untuk menjaga pengembangan pada tunk, dan memastikan bahwa perbaikan bug benar-benar membuatnya ke kedua trunk dan cabang juga.
sumber