Dự án của bạn hầu như luôn luôn sử dụng thì quá khứ . Trong mọi trường hợp, dự án phải luôn luôn sử dụng cùng một mức độ cho sự thống nhất và rõ ràng.
Tôi hiểu một số đối số khác lập luận để sử dụng thì hiện tại, nhưng chúng thường không áp dụng. Các gạch đầu dòng sau đây là các đối số phổ biến để viết ở thì hiện tại và phản ứng của tôi.
- Viết ở thì hiện tại cho ai đó biết việc áp dụng cam kết sẽ làm gì hơn là những gì bạn đã làm.
Đây là lý do chính xác nhất mà người ta muốn sử dụng thì hiện tại, nhưng chỉ với phong cách dự án phù hợp. Cách suy nghĩ này coi tất cả các cam kết là các cải tiến hoặc tính năng tùy chọn và bạn có thể tự do quyết định những cam kết nào sẽ giữ và từ chối trong kho lưu trữ cụ thể của bạn.
Đối số này hoạt động nếu bạn đang làm việc với một dự án phân tán thực sự. Nếu bạn đang làm việc với một dự án phân tán, có lẽ bạn đang làm việc với một dự án nguồn mở. Và nó có lẽ là một dự án rất lớn nếu nó thực sự được phân phối. Trên thực tế, nó có thể là nhân Linux hoặc Git. Vì Linux có khả năng là nguyên nhân khiến Git lan rộng và phổ biến, nên thật dễ hiểu tại sao mọi người lại coi phong cách của nó là uy quyền. Vâng, phong cách có ý nghĩa với hai dự án. Hoặc, nói chung, nó hoạt động với các dự án phân tán, nguồn mở lớn.
Điều đó đang được nói, hầu hết các dự án trong kiểm soát nguồn không hoạt động như thế này. Nó thường không chính xác cho hầu hết các kho lưu trữ. Đó là một cách suy nghĩ hiện đại về một cam kết: Subversion (SVN) và kho CVS hầu như không thể hỗ trợ kiểu đăng ký kho lưu trữ này. Thông thường, một nhánh tích hợp đã xử lý lọc các đăng ký xấu, nhưng những thứ đó thường không được coi là "tùy chọn" hoặc "tính năng dễ có".
Trong hầu hết các kịch bản, khi bạn thực hiện cam kết với kho lưu trữ nguồn, bạn đang viết một mục nhật ký mô tả những gì đã thay đổi với bản cập nhật này, để giúp những người khác trong tương lai dễ hiểu hơn tại sao thay đổi được thực hiện. Nó thường không phải là một thay đổi tùy chọn - những người khác trong dự án được yêu cầu hợp nhất hoặc phản ứng lại với nó. Bạn không viết một mục nhật ký như "Nhật ký thân mến, hôm nay tôi gặp một cậu bé và cậu ấy nói xin chào với tôi.", Nhưng thay vào đó bạn viết "Tôi đã gặp một cậu bé và cậu ấy nói xin chào với tôi."
Cuối cùng, đối với các dự án không được phân phối như vậy, 99,99% thời gian một người sẽ đọc một thông điệp cam kết là để đọc lịch sử - lịch sử được đọc ở thì quá khứ. 0,01% thời gian sẽ quyết định liệu họ có nên áp dụng cam kết này hay tích hợp nó vào chi nhánh / kho lưu trữ của họ hay không.
- Tính nhất quán. Đó là cách nó được thực hiện trong nhiều dự án (bao gồm cả chính git). Ngoài ra các công cụ git tạo ra các xác nhận (như git merge hoặc git Revert) làm điều đó.
Không, tôi đảm bảo với bạn rằng phần lớn các dự án đã từng đăng nhập vào hệ thống kiểm soát phiên bản đã có lịch sử của chúng trong thì quá khứ (tôi không có tài liệu tham khảo, nhưng có lẽ đúng, vì đối số thì hiện tại là mới kể từ Git). Tin nhắn "Sửa đổi" hoặc tin nhắn cam kết ở thì hiện tại chỉ bắt đầu có ý nghĩa trong các dự án phân tán thực sự - xem điểm đầu tiên ở trên.
- Mọi người không chỉ đọc lịch sử để biết "điều gì đã xảy ra với cơ sở mã này", mà còn để trả lời các câu hỏi như "điều gì xảy ra khi tôi chọn cam kết này" hoặc "những điều mới nào sẽ xảy ra với cơ sở mã của tôi vì những cam kết này Tôi có thể hoặc không thể hợp nhất trong tương lai ".
Xem điểm đầu tiên. 99,99% thời gian một người sẽ đọc một thông điệp cam kết là để đọc lịch sử - lịch sử được đọc ở thì quá khứ. 0,01% thời gian sẽ quyết định liệu họ có nên áp dụng cam kết này hay tích hợp nó vào chi nhánh / kho lưu trữ của họ hay không. 99,99% nhịp 0,01%.
Tôi chưa bao giờ thấy một cuộc tranh luận tốt nói rằng sử dụng thì không đúng ngữ pháp / ngữ pháp vì nó ngắn hơn. Có lẽ bạn sẽ chỉ lưu trung bình 3 ký tự cho một tin nhắn tiêu chuẩn 50 ký tự. Điều đó đang được nói, thì hiện tại trung bình có thể sẽ ngắn hơn một vài ký tự.
- Bạn có thể đặt tên cho các cam kết phù hợp hơn với các tiêu đề vé trong trình theo dõi vấn đề / tính năng của bạn (không sử dụng thì quá khứ, mặc dù đôi khi trong tương lai)
Vé được viết dưới dạng một cái gì đó đang xảy ra (ví dụ: ứng dụng đang hiển thị hành vi sai khi tôi nhấp vào nút này) hoặc một cái gì đó cần phải được thực hiện trong tương lai (ví dụ: văn bản sẽ cần người chỉnh sửa xem xét).
Lịch sử (tức là thông điệp cam kết) được viết như một điều đã được thực hiện trong quá khứ (ví dụ: sự cố đã được khắc phục).