Saya suka menganggap coding sebagai panjat tebing dalam konteks ini. Anda memanjat sedikit, dan kemudian Anda menaruh jangkar di batu. Jika Anda jatuh, jangkar terakhir yang Anda tanam adalah titik yang melindungi Anda, sehingga Anda tidak akan pernah jatuh lebih dari beberapa meter. Sama dengan kontrol sumber; Anda sedikit kode, dan ketika Anda mencapai posisi yang agak stabil, Anda melakukan revisi. Jika Anda gagal total, Anda selalu dapat kembali ke revisi terakhir, dan Anda tahu itu stabil.
Yang mengatakan, jika Anda bekerja di tim, itu biasa untuk memastikan apa pun yang Anda komit selesai, masuk akal, membangun dengan bersih, dan tidak merusak barang orang lain. Jika Anda perlu melakukan perubahan besar yang mungkin mengganggu pekerjaan orang lain, buat cabang sehingga Anda dapat melakukan tanpa mengganggu orang lain.
Ini juga tergantung pada sistem SCM yang Anda gunakan. Sistem terdistribusi biasanya membuat penggabungan dan forking tidak menyakitkan dan cepat, dan Anda dapat melakukan secara lokal; ini berarti Anda harus banyak melakukan, dan mendorong / menggabungkan ketika Anda telah melakukan banyak pekerjaan. Dengan sistem terpusat seperti svn atau cvs, melakukan lebih mahal, dan itu mempengaruhi semua orang. Bercabang sebagian memecahkan masalah ini, tetapi karena itu terjadi di server, itu bisa sangat lambat, dan penggabungan bisa menjadi rumit. Jadi dengan SCM terpusat, sering kali ada budaya yang lebih hati-hati, di mana Anda hanya berkomitmen setelah Anda melakukan banyak pekerjaan.
Adapun add-on: Tolong, tolong jangan lakukan itu. Baris kode, jumlah komit, jumlah bug yang ditemukan / diselesaikan, dll., Semuanya merupakan pengukuran kualitas atau bahkan kuantitas yang sangat buruk.