Về cải thiện thực hành cam kết


8

Tôi đã suy nghĩ về các cách để cải thiện thực hành cam kết của tôi.

Có bất kỳ mối quan hệ đồng nào giữa không. của các dòng mã nguồn và không. cam kết?

Trong một dự án gần đây mà tôi đã tham gia, tôi đã đạt được 30 lần cam kết trên 1000 dòng.

Một tệp điển hình từ dự án có các số liệu thống kê này

language: JavaScript
total commits that include this file: 32

total lines: 1408
source lines: 1140
comment lines: 98

no. of function declarations: 28
other declarations: 8

Một tập tin khác có ...

Language: Python
total commits that include this file: 17

total lines: 933
source lines: 730
comment lines: 80

classes: 1
methods: 10

Tôi cũng nghĩ rằng không. các cam kết có liên quan nhiều hơn đến không. tính năng hoặc không. thay đổi mã và ít hơn không. của dòng.

Phương châm cộng đồng git chung là thực hiện các cam kết ngắn và cam kết thường xuyên.

Vì vậy, bạn có thực sự nghĩ về bạn cam kết chiến lược trước khi bạn bắt đầu dự án. Đối với vấn đề đó, có bất cứ điều gì như chiến lược cam kết? Nếu vậy, bạn là gì?


Đối với câu hỏi của bạn về mối quan hệ để thực hiện một dòng mã, có một bài viết sau đây bạn có thể thấy thú vị: Sử dụng các biện pháp đảo ngược mã tương đối để dự đoán mật độ khiếm khuyết hệ thống
Joshua Drake

Câu trả lời:


8

Nếu bạn đang sử dụng DVCS, bạn nên cam kết rất thường xuyên. Tôi cam kết mỗi khi mã của tôi ở trạng thái ổn định, không liên quan đến các dòng mã. Bạn muốn có một cây nhiều cam kết nhỏ, nguyên tử giúp bạn dễ dàng nhìn thấy những gì bạn đã làm trong mỗi. Nếu bạn đang cố gắng theo dõi hồi quy mà bạn đã tìm thấy khi kiểm tra, điều này giúp thực hiện tìm kiếm nhị phân dễ dàng hơn và theo dõi cam kết chính xác, bởi vì bạn sẽ có ít thay đổi hơn cho mỗi lần xác nhận. Tôi chỉ cam kết khi mã của tôi biên dịch - ý tưởng của tôi về "nguyên tử" là nó biên dịch, vượt qua các bài kiểm tra đơn vị hồi quy và vượt qua bài kiểm tra tích hợp nhanh. Đôi khi một bài kiểm tra đơn vị được bao gồm, và đôi khi không.

Khi bạn đẩy, bạn nên đẩy toàn bộ tính năng. Phần còn lại của thế giới không muốn thấy "cam kết bỏ lỡ trong tệp này" của bạn mỗi ngày. Git cung cấp rebase, cho phép bạn dọn sạch cây cam kết của mình bằng cách ép nhiều xác nhận lại với nhau. Cộng đồng dường như không chắc chắn về bao nhiêu lịch sử bạn nên cam kết. Tôi muốn nói rằng bạn nên kết hợp các cam kết không hiển thị bất kỳ lịch sử nào, như "tệp bị bỏ lỡ" hoặc "hồi quy câm". Bạn muốn trình bày một lịch sử sạch nhất có thể để mọi người có thể dễ dàng thấy những gì bạn đã làm.

Trong một hệ thống kiểm soát phiên bản tập trung, bạn cần phải cam kết nhiều hơn nữa nếu bạn muốn giữ một lịch sử tốt. Đề nghị của tôi là bạn làm việc trên các tính năng nhỏ hơn và hoàn thành chúng nhiều nhất có thể trước khi bạn cam kết. Khái niệm "nguyên tử" của bạn ở đây phải là một tính năng hoạt động và được thử nghiệm. Bạn không muốn cam kết bất cứ điều gì phá vỡ không gian làm việc của nhà phát triển khác, bởi vì họ sẽ cập nhật thường xuyên và khó hơn rất nhiều khi làm việc trên các tính năng độc lập chồng chéo. Bạn sẽ cam kết ít hơn, nhưng những cam kết đó thường sẽ nhiều thịt hơn DVCS trung bình của bạn.

Bạn có thể thấy rằng tỷ lệ dòng mã với số lần xác nhận phụ thuộc vào mức độ lớn của các tính năng của bạn và quy trình công việc bạn sử dụng. Quy trình làm việc của bạn sẽ khác nhau tùy thuộc vào hệ thống kiểm soát phiên bản bạn sử dụng, do đó, bạn thường không thể dự đoán được cam kết của mình sẽ như thế nào. Mỗi tổ chức có tiêu chuẩn riêng của họ và nên tự xác định quy trình làm việc của họ là lý tưởng nhất.


5

Tôi đã có các cam kết sửa lỗi đã thay đổi một ký tự . Kích thước không thực sự là yếu tố quyết định ở đây. Một nguyên tắc tốt là cam kết bất cứ khi nào bạn có thể nghĩ về một thông điệp cam kết có ý nghĩa. Khi chia sẻ cam kết của bạn là một câu hỏi khác nhau. Nó thay đổi theo văn hóa nhóm của bạn, nhưng thường liên quan đến việc bạn tự tin một cách hợp lý những thay đổi của bạn hoạt động như dự định.


2

Tôi không nghĩ số lần xác nhận nên liên quan đến số dòng. Nhiều khả năng vấn đề được giải quyết / tính năng giới thiệu. Tôi sử dụng phương pháp khá đơn giản này (git):

  • Cam kết thường xuyên với chi nhánh địa phương, nhưng chỉ khi một cái gì đó thay đổi liên quan (giải quyết vấn đề khó hiểu, thêm một vài tệp / chức năng quan trọng). Bằng cách này, bạn có thể điều hướng dễ dàng giữa các bước đưa bạn đến giải pháp cuối cùng về những gì bạn đang làm việc tại thời điểm nhất định.
  • Hợp nhất các xác nhận cục bộ thành một cam kết liên quan đến tính năng / vấn đề khi gửi đến kho lưu trữ từ xa / công cộng. Bằng cách này, bất cứ điều gì bạn đã làm mà công khai, được mô tả tốt và mạch lạc, để mọi người biết bạn đang làm gì (hoặc ít nhất là có ý tưởng ngắn gọn).

Nhìn chung, bất cứ điều gì bạn làm tại địa phương là dành cho bạn - hãy tiếp cận phương pháp phù hợp với bạn. Cam kết công khai nên được suy nghĩ nhiều hơn, nhưng tôi sẽ không phát triển chiến lược hoàn toàn mới nếu nhóm đã có phương pháp làm việc. Luôn kiên định với người khác.


2

Đối với hậu thế, hãy cam kết tất cả các tệp liên quan đến lỗi / tính năng trong một lần sửa đổi. Điều này sẽ giúp bạn rất nhiều sau này khi bạn cần biết những tập tin nào đã được chạm vào để sửa lỗi.

Nó sẽ giúp bạn dễ dàng quay lại và xem những gì bạn đã làm để xem 5 tệp được kiểm tra theo lỗi # 783, thay vì cố gắng theo dõi 5 lần xác nhận (một cho mỗi tệp). Điều này có thể được giảm bớt nếu bạn có tích hợp kiểm soát nguồn / công việc tốt hơn phù hợp với việc đăng ký với một mục công việc / lỗi / tính năng / tồn đọng. Vẫn cam kết thường xuyên, nhưng đặt các tệp / tính năng liên quan trong cùng một lần đăng ký.

Nếu bạn đã thiết lập CI cho "xây dựng mọi cam kết" thì điều đó sẽ giúp bạn làm điều này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.