Perusahaan saya beralih dari Subversion ke Git sekitar tiga bulan lalu. Kami memiliki minggu pemberitahuan sebelumnya sebelum beralih. Karena saya belum pernah menggunakan Git sebelumnya (atau DVCS lainnya), saya membaca Pro Git dan menghabiskan sedikit waktu untuk memutar repositori saya sendiri dan bermain-main, sehingga ketika kami beralih saya bisa tetap bekerja dengan sedikit rasa sakit. Sekarang saya 'Git guy' secara default.
Dengan beberapa pengecualian, sebagian besar tim saya masih tidak tahu bagaimana Git bekerja. Misalnya, mereka masih menganggap cabang sebagai salinan lengkap dari kode sumber, dan bahkan melangkah lebih jauh dengan mengkloning repo ke beberapa folder (satu per cabang). Mereka umumnya melihat Git sebagai kotak hitam menakutkan.
Mengingat sifat dasar dari kontrol sumber dalam pekerjaan sehari-hari kami (belum lagi jumlah kekuatan konyol yang diberikan Git kepada kami), saya berpendapat bahwa setiap dev yang tidak mencapai tingkat kemahiran tertentu dengan itu adalah suatu kewajiban .
Haruskah saya berharap tim saya memiliki setidaknya beberapa pemahaman tentang bagaimana Git bekerja secara internal, dan bagaimana menggunakannya di luar operasi tarikan / penggabungan / push yang paling dasar? Atau apakah saya hanya membuat sesuatu dari ketiadaan?
sumber
Jawaban:
Profesionalisme secara alami akan menentukan bahwa seorang pengembang menjadi akrab dengan alat standar tim mereka, bahkan jika mereka baru dan tidak dikenal (atau bahkan tidak diinginkan).
Namun, beberapa hal di pos Anda membuat saya berhenti.
Minggu? Mengganti kontrol sumber adalah masalah besar. Seharusnya ada berbulan - bulan pemberitahuan yang mengarah pada perubahan seperti itu.
Jadi, perusahaan Anda beralih ke sistem kontrol sumber yang sedikit, jika ada, yang mengerti pada saat itu?
Kecuali jika ada konteks lain, sepertinya seluruh langkah itu tidak dipikirkan dengan baik (langkah, bukan pilihan - saya penggemar berat git).
sumber
Kami telah memperkenalkan Git di tempat saya bekerja dan secara alami ada penolakan. Itu untuk proyek baru jadi kami sekarang mempertahankan dua repositori.
Sebagian dari masalahnya adalah bahwa orang tidak akan melihat manfaat dari beralih ke SCM yang berbeda ketika yang mereka gunakan bekerja untuk mereka. Ini membantu ketika kami duduk bersama tim kami selama beberapa jam sesi di mana kami hanya akan menunjukkan kasus penggunaan dari proyek kami dan bagaimana Git membuatnya lebih mudah. Misalnya, hal-hal yang membantu kami:
dll. Masing-masing memecahkan masalah yang kami temui dengan SCM kami sebelumnya dan agar orang dapat lebih menghargai Git.
Hal lain adalah Anda tidak dapat mengharapkan orang untuk pergi dan membaca buku tentang itu karena sangat sedikit yang mau. Mungkin mereka perlu menyelesaikan pekerjaan, memiliki tanggung jawab lain, atau sejumlah alasan.
Jadi, sebagai 'ahli Git' Anda harus duduk dan membuatnya semudah mungkin bagi orang untuk menggunakannya. Mereka ingin menulis kode, tidak mengacaukan sistem SCM mereka.
CLI Git adalah masalah samar dan sepele (bagi Anda dan saya) akan menghalangi orang untuk bekerja. Inilah yang terjadi di tim kami (ingat, ini adalah pengembang yang cukup kompeten):
Kami masih mendapatkan perlawanan tetapi orang-orang pasti bisa melihat manfaatnya. Sangat penting untuk memiliki beberapa orang Git untuk mendapatkan panduan dan bersedia membantu. Juga saya akan menghindari mengajarkan hal-hal keren seperti reset / rebase / - ubah / dll. karena kebanyakan orang akan menggunakan Git seperti SVN, lebih baik membiarkan mereka menemukannya jika mereka menginginkannya.
sumber
Mahir vs Git-mania
Suatu istilah seperti kemahiran dasar dapat berarti hal yang berbeda untuk orang yang berbeda. Banyak orang tampaknya memiliki git-mania (tidak ada yang salah dengan itu). Banyak dari kita telah dibakar dengan sangat buruk oleh kecerobohan kita dan orang lain dengan kontrol sumber.
Mengapa Itu Penting?
Alat kontrol sumber sangat penting karena penyalahgunaan dapat memperlambat tidak hanya satu orang, tetapi seluruh tim. Menyalahgunakan Git seharusnya tidak terlalu bermasalah daripada menyalahgunakan SVN, CVS, dan sistem lainnya. Secara historis, tidak kompetennya penggunaan sistem yang mengunci file sangat problematis, dan perusahaan-perusahaan merekrut tim pembangun diskrit sehingga ketika seseorang mendapat masalah, ada seorang ahli yang fasih yang melakukan hampir apa-apa selain kontrol sumber yang bisa menyembuhkan luka pada repositori. Ini sebagian menjelaskan beberapa gairah yang Anda temukan di balik git.
Seperti apa kemampuan dasar itu?
Beberapa kriteria konkret meliputi:
Tanpa referensi dokumentasi:
Dengan dokumentasi:
Model mental git yang solid dan kode yang dikelola sangat penting untuk menghindari kesalahan.
Apa yang akan Anda tambahkan untuk keahlian / keahlian tingkat lanjut?
Penggunaan yang lancar sangat penting untuk pengembang dan mungkin beberapa anggota tim Anda. Alat-alat seperti Git adalah overhead dan harus dipelajari ke tingkat di mana mereka bisa hampir otomatis. Meminimalkan waktu dan gangguan yang dihasilkan dengan menggunakan perintah git yang diulang ribuan kali per tahun memiliki nilai tinggi.
Akan selalu ada beberapa anggota tim Anda yang akan menjadi pengguna yang kuat dan menggunakan hampir setiap perintah dengan hampir setiap opsi. Rekomendasi saya adalah bahwa anggota tim didorong untuk terus belajar git (dan alat-alat lain) sampai ROI untuk belajar turun di bawah nilai melakukan sesuatu yang lain pada proyek, dengan batasan utama adalah menjaga kecepatan dengan menetapkan item burndown yang ditugaskan dari saat ini lari cepat.
sumber
GIT adalah alat yang adil untuk melakukan pekerjaan, dan salah satu masalah terbesarnya adalah bahwa banyak penginjil GIT berharap semua pengguna GIT berada di bawah para pakar yang memahami poin terbaik dari cara kerjanya. Ini adalah kelemahan terbesar GIT - untuk menggunakannya Anda harus tahu cara kerjanya. Tidak ada resep dengan GIT, Anda diharapkan menjadi ahli GIT atau tidak menggunakannya. Sangat menyenangkan bahwa Anda membaca Pro-GIT organisasi Anda membutuhkan guru GIT (atau dua) "goto" untuk memaksimalkan investasi di dalamnya, karena tidak setiap pengembang ingin menjadi Guru GIT - dan itu tidak masalah.
Tim perlu tahu cara menggunakan GIT (Sebenarnya mereka hanya perlu tahu cara menggunakan bagian-bagian GIT yang alur kerjanya mengharuskan mereka gunakan), bukan bagaimana GIT bekerja. Sangat merugikan untuk mengharapkan setiap pengembang untuk mengetahui setiap detail tentang setiap alat yang mereka gunakan. Jika Anda belum memiliki buku resep yang mendukung alur kerja Anda, Anda belum menggunakan GIT, Anda telah membuangnya pada pengembang.
Saya tidak memberi monyet bagaimana GIT bekerja, selama saya tahu cara membuat git bekerja untuk saya.
sumber
Iya.
Tidak peduli alat apa yang "perusahaan" telah putuskan, tim pengembangan Anda harus meluangkan waktu mempelajari cara menggunakan alat itu dengan benar. Tidak ada yang lebih merugikan produktivitas daripada sekelompok pengembang yang takut atau tidak tahu tentang alat. Jika mereka menggunakannya salah atau bekerja melawannya, masalah akan muncul dan saat pria itu pergi, Anda akan ditugaskan untuk membersihkan kekacauan itu.
Git adalah transisi yang sulit bagi banyak orang, jadi sesi pelatihan wajib duduk mungkin bisa dilakukan. Ini akan membantu menuntaskan banyak masalah yang dialami orang.
sumber
Saya hanya menggunakan Git dalam pengaturan pribadi dan bukan yang profesional, dan meskipun saya menyukai kekuatan yang dimilikinya dan gagasan tentang kontrol sumber yang lebih terdesentralisasi, Git memiliki masalah besar. Git memiliki abstraksi yang bocor dan dibutuhkan banyak perintah untuk melakukan hal-hal sederhana (misalnya untuk membuat perubahan: git add, git commit, lalu git push). Juga beberapa dokumentasi kurang dan / atau membingungkan seperti dengan deskripsi perintah rebase ... "Teruskan-port lokal berkomitmen untuk kepala hulu yang diperbarui". Saya tidak tahu apa artinya itu, dan meskipun saya sekarang tahu Anda dapat memindahkan komit dan menulis ulang sejarah dengan itu (gangguan lain ... mengapa Anda diizinkan melakukan ini ???) Saya tidak akan pernah bisa menebaknya dari perintah itu deskripsi. Saya pikir beberapa bacaan di bagian tim Anda, dan beberapa pelatihan lagi yang diberikan oleh Anda dalam rangka.
sumber
Pelatihan dan pemahaman adalah persyaratan minimal. Seseorang yang bertanggung jawab seharusnya memastikan ada rencana tentang bagaimana tim Anda akan menggunakannya. Anda tidak akan mengadopsi bahasa pemrograman baru tanpa panduan. Pelatihan pengemudi jauh lebih efektif ketika aturan jalan yang ditetapkan dimasukkan.
sumber
Tidak; Saya pikir masuk akal untuk mengharapkan yang berikut:
Jika mereka tidak bisa melakukan # 1, maka bagian latihan dari peluncuran Anda mungkin tidak cukup. Jika mereka tidak dapat melakukan # 2, maka pertama-tama pastikan Anda menjelaskan hal-hal yang cukup jelas sebelum menjadi terlalu marah.
sumber