Tôi thích nghĩ về tiền mã hóa như leo núi trong bối cảnh này. Bạn leo lên một chút, và sau đó bạn đặt một cái neo vào đá. Nếu bạn từng ngã, mỏ neo cuối cùng bạn trồng là điểm bảo vệ bạn, vì vậy bạn sẽ không bao giờ rơi quá vài mét. Tương tự với kiểm soát nguồn; bạn viết mã một chút và khi bạn đạt đến một vị trí hơi ổn định, bạn cam kết sửa đổi. Nếu bạn thất bại khủng khiếp, bạn luôn có thể quay lại bản sửa đổi cuối cùng đó và bạn biết nó ổn định.
Điều đó nói rằng, nếu bạn làm việc trong một nhóm, theo thông lệ, hãy đảm bảo mọi thứ bạn cam kết đã hoàn thành, có ý nghĩa, xây dựng sạch sẽ và không phá vỡ nội dung của bất kỳ ai khác. Nếu bạn cần thực hiện các thay đổi lớn hơn có thể ảnh hưởng đến công việc của người khác, hãy tạo một chi nhánh để bạn có thể cam kết mà không làm phiền bất kỳ ai khác.
Nó cũng phụ thuộc vào hệ thống SCM bạn đang sử dụng. Các hệ thống phân tán thường làm cho việc hợp nhất và chuyển đổi không đau đớn và nhanh chóng, và bạn có thể cam kết cục bộ; điều này có nghĩa là bạn nên cam kết nhiều và đẩy / hợp nhất khi bạn đã hoàn thành một khối lượng công việc đáng kể. Với các hệ thống tập trung như svn hoặc cvs, việc cam kết sẽ tốn kém hơn và nó ảnh hưởng đến tất cả mọi người. Việc phân nhánh một phần giải quyết vấn đề này, nhưng vì nó xảy ra trên máy chủ, nên nó có thể bị chậm một cách khó khăn và việc hợp nhất có thể trở nên cồng kềnh. Vì vậy, với SCM tập trung, thường có một nền văn hóa cẩn thận hơn, nơi bạn chỉ cam kết một khi bạn đã hoàn thành một lượng công việc đáng kể.
Về phần bổ trợ: Xin vui lòng, đừng làm vậy. Các dòng mã, số lần xác nhận, số lỗi được tìm thấy / giải quyết, v.v., đều là các phép đo rất tệ về chất lượng hoặc thậm chí số lượng.