Tại sao tôi nên viết một thông điệp cam kết?


18

Tại sao tôi nên viết một thông điệp cam kết? Tôi không muốn và tôi nghĩ nó ngu ngốc mỗi lần.

Một giao diện GUI tôi sử dụng sẽ không được đặt tên buộc bạn phải làm điều đó. Tôi nghe thấy người khác làm điều đó mỗi lần ngay cả khi họ đang sử dụng VCS trên dòng lệnh.

Nếu tôi cam kết nhiều lần trong ngày và chưa hoàn thành một tính năng thì tôi sẽ viết về cái gì? Tôi CHỈ bao giờ viết một tin nhắn sau nhiều lần cam kết và tôi cảm thấy đã đến lúc cho một thẻ nhỏ hoặc khi tôi thực hiện một thẻ thực tế.

Tôi đúng hay tôi đang thiếu một cái gì đó? tôi cũng đang sử dụng một hệ thống phân tán


1
Đừng bận tâm, chỉ cần nói "blah" trong dòng bình luận. Miễn là bạn không bao giờ chia sẻ mã với bất kỳ ai khác và miễn là không ai khác sẽ làm việc với nó và miễn là bạn không bao giờ phải quay lại mã và miễn là bạn không bao giờ mắc một lỗi mã nào và ... Đợi một chút, tại sao bạn lại sử dụng kiểm soát phiên bản?
Michael Durrant

Câu trả lời:


24

Đối với tất cả những người nói rằng "chỉ cam kết khi bạn có một thông điệp hữu ích, được suy nghĩ kỹ để viết và khi tính năng của bạn hoàn thành 100% và bạn có các bài kiểm tra đơn vị cho nó", tôi nói: Bạn vẫn còn trong suy nghĩ của SVN .

Nếu bạn đang sử dụng git , đây là thứ tôi sẽ gọi là quy trình làm việc thông minh:

  1. Cam kết thường xuyên như bạn muốn . Viết bất kỳ tin nhắn nhanh cũ ở đó. Không ai sẽ nhìn thấy nó dù sao.
  2. Sau khi nói, 10 lần cam kết, bạn đã hoàn thành tính năng mà bạn đang làm việc. Bây giờ viết bài kiểm tra và cam kết những bài kiểm tra. Hoặc bất cứ điều gì bạn muốn. Nếu bạn thích TDD, hãy viết bài kiểm tra trước, tôi không quan tâm, git cũng không.
  3. git rebase -itừ cam kết 'lộn xộn' đầu tiên mà bạn đã thêm và sửa chữa lịch sử địa phương của mình bằng cách xóa, chỉnh sửa, bỏ qua và làm sạch lịch sử gần đây của bạn thành các cam kết sạch sẽ, hợp lý với các thông điệp tốt đẹp .
  4. Sau khi dọn dẹp, hãy nhờ ai đó kéo từ bạn.
  5. Rửa sạch và lặp lại.

Lưu ý rằng bước 3 là khi bạn kết thúc với những cam kết tốt đẹp đó sau đó và khi sử dụng SVN, bạn phải tránh việc cam kết cho đến khi bạn thực hiện hai bước đầu tiên, đó là điều mà hầu hết các câu trả lời khác đang đề xuất. IOW, bạn không muốn gây ra một nửa mã chưa được viết, chưa được kiểm tra cho người khác, vì vậy bạn không cam kết trong một tuần, cho đến khi tính năng của bạn được thực hiện. Bạn không sử dụng kiểm soát phiên bản cho toàn bộ tiềm năng của nó.

Cũng lưu ý rằng bất cứ nơi nào giữa các bước 1 và 3, bạn có thể git pushthay đổi gương nhân bản riêng của mình trên máy chủ để nhận bản sao lưu miễn phí nếu ổ cứng máy tính xách tay của bạn chết.


Câu trả lời tốt, tôi thích nó. Tôi hơi sợ khi sử dụng rebase. Đây là một bài viết về nó đi sai và làm thế nào để phục hồi nó bluemangolearning.com/blog/2009/03/ trên

@acid, nếu bạn đang từ chối các thay đổi riêng tư của mình, sẽ không có bất kỳ xung đột nào. Bên cạnh đó, bạn phải cố gắng hết sức để mất bất cứ thứ gì trong git.
Alex Budovski

4
quy trình làm việc của tôi, đá git
Nazgob

1
@Boris: Bởi vì anh ấy đang nói rõ ràng về git mà rõ ràng KHÔNG phải là lật đổ

3
Nó thực sự không nên là một công việc quan trọng để viết một câu nói rõ những gì bạn vừa làm, và phá hủy lịch sử với rebase có vẻ đáng ghét. Giả sử bạn đã giới thiệu một lỗi trong 5 trong số mười cam kết không bị bắt cho đến một tuần sau đó. Có thể ghim nó xuống một cam kết nhỏ sẽ giúp bạn rất nhiều.
Gort Robot

55

Bởi vì khi một số người bảo trì kém đang săn một lỗi và thấy rằng nó đã được thêm vào trong rev. xyz, anh ấy sẽ muốn biết rev. xyz đáng ra phải làm.


38
Chà, sau đó anh ta có thể đọc 5.000 dòng mì spaghetti tôi vừa kiểm tra, JEESH !!! Một số người chỉ lười biếng!
Edward Strange

9
Vì khi kẻ hút người nghèo đến sau bạn (trong 3 năm) và nhìn vào lịch sử và đi ... WTF .. WTF .. WTF, ít nhất anh ta sẽ có một số ý tưởng về những gì đang xảy ra. Bạn có thể dễ dàng thêm một nhận xét như "đăng ký thường xuyên, tính năng X, không đầy đủ".
quick_now

3
@ acidzombie24: Bởi vì mọi cam kết nên nói nó được dùng để làm gì - ngay cả khi nó "sửa lỗi chính tả trong ....", không có điểm nào trong lịch sử sửa đổi, trừ khi bạn biết bản sửa đổi là gì.
Orble

11
@quickly_now, kẻ hút người nghèo thậm chí có thể là chính bạn. Thật không may, đây là một trong những điều bạn phải tự trải nghiệm để đánh giá đầy đủ.

2
@acidzombie - tại sao bạn kiểm tra các thay đổi không đầy đủ ??
Edward Strange

35

Bạn nhận xét mã nguồn của bạn, phải không?

Bạn viết những bình luận hay nhất, những người nói tại sao như mã chỉ nói thế nào ?

Thông điệp cam kết là một nhận xét như vậy, và do đó nó rất quan trọng và bạn càng nghĩ nhiều hơn để làm cho đúng, nó càng hữu ích cho người bảo trì phần mềm trong tương lai.

Đối với bất kỳ phần mềm hoạt động nào, bình luận cụ thể này cuối cùng sẽ được hiển thị trong một cái gì đó như

gitk - tất cả các mẫu

(tìm thấy tại http://longair.net/blog/2009/04/25/a-few-git-tips/ ). Điều này cho phép một cái nhìn của loài chim về những người đã làm việc trên phần mềm khi nàonhững gì họ đã làm.

Lưu ý rằng đây là mục tiêu cuối cùng cho nhận xét cam kết, cụ thể là hiển thị trong danh sách như vậy nói " cái gì " với bản thân tương lai của bạn hoặc đồng nghiệp của bạn, và đó là lý do tại sao bạn nên cẩn thận khi viết tin nhắn cam kết tốt.


2
@acidzombie, tôi chỉ có thể nói cho git, nhưng bạn có thể cam kết trong các bước rất nhỏ cục bộ và sau đó nhóm tất cả chúng lại với nhau trong một cam kết duy nhất khi đẩy ngược dòng. Đó là cam kết sau đó nhắn có thể được mô tả.

2
@acidzombie, tại sao bạn cam kết nếu bạn chưa thực hiện đủ các thay đổi để đảm bảo nhận xét? Vui lòng giải thích.

2
@Thor: Bởi vì kiểm soát phiên bản bảo vệ mã của bạn khỏi bị mất và thậm chí mã được thực hiện một nửa nên được bảo vệ.
Ben Voigt

1
@Ben, cam kết là để lưu trữ lâu dài và nên phản ánh chính xác "khối" công việc. Theo quan điểm của tôi, việc bảo vệ chống mất là trực giao với kiểm soát phiên bản và nên được xử lý bởi một hệ thống sao lưu phù hợp. Tôi đã tìm thấy Time Machine cho Mac rất phù hợp cho mục đích này - tôi hy vọng một hệ thống tương tự có sẵn cho Windows.

2
+1 Tôi là một người hâm mộ không làm ô nhiễm kiểm soát nguồn của tôi với các cam kết vô nghĩa. Nó giúp tìm kiếm một cam kết cụ thể dễ dàng hơn (thông qua các bình luận hữu ích) và tôi biết rằng khi tôi kiểm tra mã, nó luôn ở trạng thái hoạt động. Phần mềm sao lưu truyền thống là một tùy chọn tốt hơn để bảo vệ kho lưu trữ cục bộ của tôi ở giữa các cam kết. Điều này hoạt động tốt với DVCS, nhưng bạn phải nhớ rằng đăng ký cục bộ không thực sự là bản sao lưu mã của bạn.
Adam Lear

15

Nếu thông điệp cam kết có vẻ ngu ngốc đối với bạn thì có vẻ như bạn đang sử dụng sai.

Các cam kết nên được thực hiện vì lý do chính đáng - chúng nên liên quan đến các nhiệm vụ bạn đã chia nhỏ cho tính năng bạn đang làm việc. Cho dù những nhiệm vụ đó là chính thức hay chỉ là trong tâm trí của bạn, mỗi thay đổi bạn cam kết sẽ ít nhiều hoàn thành một nhiệm vụ và do đó có chức năng theo một cách nào đó.

Sau đó, tin nhắn cam kết của bạn phục vụ một mục đích tốt hơn nhiều. Mô tả nhiệm vụ bạn đã hoàn thành và nếu nó không được theo dõi ở nơi nào khác, tại sao nhiệm vụ đó lại cần thiết hoặc mục đích của nó là gì:

  • Tái cấu trúc lớp người dùng để đóng gói tốt hơn
  • Sơ khai API đã tạo để giao diện có thể được sử dụng trong lớp trình điều khiển
  • Chuyển đổi lớp cơ sở dữ liệu thành một lớp trừu tượng để có thể sử dụng cơ sở dữ liệu giả trong các trường hợp thử nghiệm

Sau đó, bạn hoặc các nhà phát triển khác có thể duyệt qua kho lưu trữ hoặc lịch sử tệp và khá dễ dàng xem nơi diễn biến nhất định đã xảy ra và tại sao. Hoặc, nếu một bản sửa đổi cụ thể bị coi là có lỗi, thông báo cam kết sẽ đưa ra manh mối về lý do tại sao dòng đó được đưa vào, để bạn không xé nó ra và có thể từ chối một thứ được cho là đã sửa, và thay vào đó bạn có thể sửa nó đúng cách.


1
+1, có vẻ như anh ta đang cam kết quá thường xuyên hoặc tại các điểm dừng xấu. Nếu anh ta chỉ muốn một điểm sao lưu tốt cho một số thay đổi thử nghiệm, anh ta có thể sử dụng chỉ mục, nhánh tạm thời, sửa đổi các cam kết trước đó thay vì tạo mới, hoặc thậm chí sử dụng bộ đệm hoàn tác trong trình chỉnh sửa của mình.
Karl Bielefeldt

1
@Karl: IIRC linus trong bài nói chuyện trên google của anh ấy cho biết trung bình 6 lần cam kết được thực hiện mỗi ngày. Bây giờ, tôi không biết bao nhiêu được coi là nhiều, nhưng trong dự án này ngay bây giờ tôi đã cam kết khi tôi có một số phản ánh hoạt động (tôi lặp đúng dữ liệu, tôi không làm gì với nó), sau khi tôi tạo giao diện nhưng trước khi tuần tự hóa hoạt động. và bây giờ tôi đang làm việc để tuần tự hóa hoạt động mặc dù tôi đã có giao diện 2 giờ trước. Tôi sẽ cam kết và nói "những điều cơ bản phản ánh" một khi nó hoạt động nhưng trong ba lần đầu tiên tại sao tôi lại để lại nhận xét khi tôi có thể dễ dàng nhìn thấy khi một tính năng đang hoạt động "mỗi x cam kết.

Trên thực tế tôi có thể giữ cho đến khi tôi nhận được một số thử nghiệm cơ bản vì nếu không, nếu tôi nhận xét mọi cam kết làm sao tôi biết cái nào trong số này có phản xạ ổn định? 'cơ bản về phản xạ', 'tuần tự phản xạ' 'thử nghiệm tuần tự hóa phản xạ' Giả sử tuần tự hóa là điều bắt buộc có thể là thứ 2 hoặc thứ 3. Kiểm tra có thể có nghĩa là kiểm tra đơn vị hoặc kiểm tra có thể có nghĩa là kiểm tra nếu nó hoạt động trên các lớp cơ bản tôi yêu cầu. Tôi chỉ nghĩ rằng bình luận có ý nghĩa khi tôi có thể nói "những điều cơ bản làm việc phản chiếu" hơn là đoán xem điều nào trong số này thực sự có nghĩa là những điều cơ bản đang hoạt động. Ngoài ra nó dễ dàng hơn để đọc lướt / tìm thấy khi có ít để đọc.

@acid, toàn bộ mục đích của một cam kết là có thể trở lại với nó hoặc so sánh các thay đổi với nó. Nếu bạn cần phải làm điều đó với các cam kết trước đó, làm thế nào để bạn biết nên chọn cái nào? Bạn không cần phải viết tiểu thuyết ở đây. "Giao diện làm việc", "làm việc tuần tự hóa" và "hoạt động phản chiếu" theo tôi là tốt. Không có số lần cam kết tối đa cố định mỗi ngày, nhưng nếu tin nhắn của bạn sẽ đọc như "một số công việc trên giao diện" "một số công việc khác trên giao diện" "giao diện gần như đã hoàn thành", thì bạn nên cam kết quá thường xuyên và chỉ nên sử dụng chỉ số.
Karl Bielefeldt

@Karl: Chỉ số btw là gì? Tôi biết git có một stash nhưng tôi không nghĩ bạn nói về điều đó. Nó làm gì?

12

Cam kết không giải quyết mọi thứ. Luôn có cơ hội họ có thể đánh lừa nhiều như họ giúp đỡ - đặc biệt là khi các nhà phát triển tức giận về việc phải nhập chúng. Hãy thử điều này: coi chúng giống như một vệt bánh mì trong rừng hoặc một điểm tham quan leo núi hoặc đạn đánh dấu. Thực hiện đúng, họ có thể phác thảo một con đường khó hiểu khác.

Đừng làm to chuyện ra khỏi chúng. Hãy trung thực:

  • "Đã chỉnh sửa các thực thể chỉ mục không gian, Dao và UI để xử lý tính năng X"
  • "Đăng ký gia tăng cho yêu cầu tính năng # 1234 và lỗi # 5678"
  • "Tôi đã phá vỡ bản dựng cuối cùng. Đây là những tệp tôi đã bỏ lỡ."

Giữ nó ngắn và "bức tranh lớn". Nếu có thể, hãy tham khảo một số vấn đề trong hệ thống tính năng / lỗi của bạn. Một số UI kiểm soát phiên bản bao gồm một trường cho loại điều này.


2
+1 cho ý tưởng giữ cho nó ngắn. Ngắn và đơn giản và đủ tốt là hoàn toàn tốt.
quick_now

1
IMHO một hướng dẫn thậm chí tốt hơn sẽ là công thức chung "càng ngắn càng tốt, miễn là cần thiết"; vì đôi khi đơn giản là không thể giữ nó ngắn mà không hy sinh thông tin cần thiết
hvr

11

Nó giảm số lượng WTF / phút;)

nhập mô tả hình ảnh ở đây

điều này chuyển thành một nhóm hạnh phúc hơn (người không ghét bạn) và đầu ra nhóm tốt hơn có khả năng với chi phí thấp hơn


4
Tôi sẽ bỏ phiếu này nếu bạn giải thích lý do tại sao điều này là đúng.
SingleNegationElimination 26/211

@TokenMacGuy - Xin lỗi, tôi không theo dõi.
Rook

1
Làm thế nào để thông điệp cam kết biểu cảm Giảm WTFs / phút (chắc chắn là như vậy)
SingleNegationElimination 26/211

@TokenMacGuy - Tôi nghĩ đó là điều hiển nhiên.
Rook

9

Vì vậy, phần còn lại trong nhóm của bạn biết WTF bạn đang kiểm tra các thay đổi đối với cây dự án.


7
Tôi thêm thông điệp cam kết cho các dự án của mình, khi tôi là nhà phát triển duy nhất! Bởi vì khi tôi trở lại sau 2 năm để xem những thứ này, tôi muốn biết WTF tôi đang làm vào thời điểm đó. Tôi biết rất rõ rằng 99% thời gian này sẽ không được xem xét. 1% thời gian nó sẽ giúp tôi tiết kiệm được 2 tuần đau đớn và tôi nghĩ rằng giá của việc nhập một tin nhắn cam kết 10 giây là xứng đáng với lợi ích lâu dài mà tôi sẽ nhận được.
quick_now

@quickly_now, đau đớn thậm chí? Mã của bạn tệ không?

1
@quickly_now: Amen đó. Trong không gian của một hoặc hai năm, rất nhiều mã xuất hiện trong tôi, những gì cuối cùng được cho là sẽ làm trong nhiều tháng sau đó, chúa chỉ biết. Chúa, và lịch sử sửa đổi của tôi.
Orble

Ồ vâng. Tôi cũng đồng ý. Tôi nghĩ về nó như kinh nghiệm == khiêm tốn.
Michael Durrant

8

bởi vì nếu bạn không thực hành nhập tin nhắn cam kết đàng hoàng, bạn sẽ kết thúc giống như đồng nghiệp của tôi, người nhập tin nhắn như

no changes

hoặc là

testing

cho các cam kết với hơn một trăm tệp đã thay đổi (không đùa ở đây !!).

Nếu bạn trở thành nhà phát triển như vậy, bạn sẽ trông thật ngu ngốc trong mắt phần còn lại của thế giới, bất kể bạn nghĩ nó ngu ngốc đến mức nào khi chỉ cần nhập một tin nhắn.


1
Nghe có vẻ là một ứng cử viên hoàn hảo để đánh giá ngang hàng trước khi cam kết, nếu tôi từng nghe.

2
Ôi trời, tôi đã làm việc với những người như thế. Ổ đĩa cho tôi.
Sevenseacat

4

Tại sao bạn cam kết nếu những thay đổi không có ý nghĩa?

Chỉ cần cam kết thay đổi có ý nghĩa. Ví dụ, tôi đã thực hiện tái cấu trúc khá lớn vào tuần khác, tôi mất khoảng 3 ngày. Tôi sẽ có hàng tấn cam kết trong thời gian đó. Một số thay đổi khá nhỏ ('đổi tên lớp X thành Y để phản ánh trách nhiệm mới' hoặc 'chuyển phương thức Z () sang lớp Q') và các thay đổi khác thực sự lớn. Khi tôi hoàn thành một tính năng / tái cấu trúc, tôi kiểm tra xem một số cam kết có thể bị xóa (ít nhất là git hỗ trợ điều đó, không biết về các công cụ khác), nhưng tôi thường để chúng như vậy vì nó sẽ giúp ích sau này.

Tôi đoán bạn sẽ không cam kết ở giữa chỉnh sửa một dòng, vì vậy nó nên có ý nghĩa. Chỉ cần mô tả những gì bạn đã làm kể từ lần cam kết cuối cùng.


3

hãy tưởng tượng một điều kiện khi bạn phá vỡ hệ thống của mình bằng cách thực hiện một số thay đổi và nhận ra điều này sau một vài lần cam kết theo nhóm. Bạn không nhớ thay đổi là gì nhưng bạn nhớ có thể có lỗi xảy ra khi bạn tăng cường tính năng X hoặc xóa tệp khỏi mô-đun Y.

Nhưng thật không may, số sửa đổi không cho bạn biết khi bạn thay đổi X hoặc Y. Vì vậy, lựa chọn của bạn là đọc tất cả các mã được cam kết trong N ngày qua hoặc chỉ đọc các thông báo cam kết chi tiết bạn đã viết (dễ đọc hơn nhiều so với mã).

Vì vậy, nếu bạn viết cùng một văn bản nhàm chán, vô dụng, không liên quan trong thông điệp cam kết, bởi vì bạn phải, có hại hơn là có thông điệp cam kết. Bởi vì thay vì tìm lỗi root, thông báo sai sẽ khiến bạn hiểu lầm.

Vì vậy, hãy cố gắng viết thông điệp cam kết có ý nghĩa mỗi khi bạn cam kết có thể giúp bạn và duy trì.


Tại sao tôi nên làm điều này trong mỗi lần cam kết thay vì vào cuối ngày, mỗi ngày hoặc khi tôi hoàn thành một tính năng?

1
Tại sao bạn cam kết điều đó thường xuyên, nếu nó không có lý do "tự nhiên"?

Tôi cam kết bất cứ khi nào tôi thực hiện một số thay đổi quan trọng, vì vậy nó có thể được phản ánh trong kho lưu trữ và các nhà phát triển khác có thể kiểm tra những thay đổi đó. Nhưng câu trả lời bạn đưa ra giúp có một con mắt về những gì được thực hiện bởi ai và khi nào.
GG01

@ acidzombie24 Chà, đừng cam kết một nửa công cụ đã hoàn thành trừ khi bạn thực sự phải làm. Và vì vậy, những người khác có thể thấy những gì bạn đang làm / làm việc khi bạn bị ốm một ngày và không có gì hoạt động. Hoặc để bạn có thể nhớ nơi bạn rời đi khi bạn phải ngồi trong các cuộc họp trong 2 ngày. Hoặc để bạn dễ dàng xác định chính xác hơn bản sửa đổi nào đã phá vỡ bản dựng và nhìn vào khác biệt.
số

@ Thorbjørn: Tại sao tôi không thực hiện thay đổi mà tôi không muốn làm lại?

3

Nếu bạn đang làm việc với người khác, thì các thông điệp cam kết rất quan trọng để thực sự thấy những gì người khác đã làm: tìm kiếm sự khác biệt cho mỗi người trong số họ là công việc nhiều hơn và bạn có thể không hiểu tại sao ai đó đã làm điều đó. Nếu bạn làm việc với người khác và ai đó (có lẽ không phải bạn) phải thực sự nhìn lại, ví dụ để theo dõi hành vi đã thay đổi như thế nào từ phiên bản trước theo cách không mong muốn ... bạn thực sự gây khó khăn cho cuộc sống bằng cách không sử dụng một gợi ý hữu ích trong cam kết thông điệp.

Nếu bạn đang làm việc một mình ... trong một dự án chủ yếu được mã hóa 'như hiện tại' (ví dụ: một trang web hoặc tập lệnh đơn giản) tôi có thể ít nhiều thấy bạn đến từ đâu. Nếu tôi làm việc trên một cái gì đó như thế, tôi chỉ quan tâm đến ngày / thời gian hoặc những thay đổi gần đây nhất khi tiếp tục làm việc gì đó (bạn có một điểm cần khôi phục, nhưng điều đó chỉ quan trọng trong quá trình phát triển, không phải sau khi bạn triển khai nó). Kiểm soát phiên bản chỉ là một cách tạo bản sao lưu với một vài kìm - tôi hoàn toàn đồng ý rằng việc không sử dụng hoàn toàn hệ thống - nhưng trên một số dự án quy mô nhỏ, điều đó có thể không cần thiết.

Ý nghĩ đã xảy ra với tôi trước đó rằng Control Control đang được sử dụng theo hai cách phân tách, một trong những thay đổi tài liệu trong dự án và khác là giúp đỡ cho các nhà phát triển tại chỗ ... và hai điều đó hoàn toàn khác nhau. Thông điệp cam kết rất quan trọng theo một cách, và có thể hầu như vô dụng theo cách khác.


3

Bạn đang thiếu một cái gì đó. Có phải là một lý do để thực hiện một cam kết nếu không bạn sẽ không được làm việc đó.

Tất cả những gì bạn cần làm trong bình luận là đưa lý do thành lời, ngay cả khi đó chỉ là wip: adding new state objects


chính xác. Ngay cả khi (như đã đề cập trước đó), đó chỉ là mã mà bạn 'không muốn làm lại' rõ ràng nó có nghĩa là một cái gì đó do đó không khó để viết một bản tóm tắt siêu nhanh về nó.
Sevenseacat

2

Giống như nhiều người khác, tôi thực hiện một chút mã hóa trong thời gian rảnh rỗi và sử dụng hệ thống kiểm soát sửa đổi để theo dõi cả sự phát triển và thay đổi của tôi. Lượng thời gian rảnh rỗi tôi có sẵn thay đổi rất nhiều từ tuần này sang tuần khác và tháng này sang tháng khác. Nhiều lần tôi đã không có thời gian để viết mã cho một dự án trong nhiều tuần hoặc thậm chí nhiều tháng, và thời gian như vậy tôi thường sẽ dao động từ 10 phút (ngày thông thường) đến 40 phút (ngày tốt). Những điều đó chắc chắn không phải là điều kiện tuyệt vời - đặc biệt là cho các vấn đề gỡ lỗi.

Điều cần thiết là giữ các ghi chú mà cả hai sẽ không bị mất, và có thể dễ dàng lấy lại được. Vào cuối mỗi phiên, công việc của phiên sẽ được cam kết với một thông báo chi tiết. Sau đó tôi có thể đi qua lịch sử cam kết và theo dõi tiến trình và quá trình suy nghĩ của mình. Điều này cho phép tôi chọn nơi tôi đã ở tuần trước hoặc tháng trước với ít thời gian quý giá nhất bị mất.

Điểm mà tôi đang cố gắng minh họa là các thông điệp cam kết tốt sẽ giúp bạn (và bất kỳ ai khác đến sau bạn) để tìm ra điều gì đã xảy ra, điều gì đang xảy ra, nơi mọi thứ đang diễn ra và trên hết là tại sao.


2

Hãy suy nghĩ về nó một cách logic trong một phút. Khi bạn đang cam kết điều đó có nghĩa là một cái gì đó đã được thực hiện. Nếu bạn không để lại tin nhắn, làm thế nào người khác biết những gì đã được thực hiện?


Nhìn lướt qua mã vô cùng rõ ràng của tôi và họ sẽ biết ngay lập tức mọi thứ nó làm và tất cả các bài kiểm tra tuyệt vời mà nó vượt qua 100%. Xin lỗi, tối nay tôi có tâm trạng hài hước [vì vậy tôi đang KIDDING];)
Michael Durrant

1

Nếu bạn không bình luận về cam kết của mình, bạn có thể muốn bình luận về sự thay đổi trong nguồn. Trong thời gian, điều đó có thể làm lộn xộn nguồn.


2
Tôi không muốn làm điều đó

1

Thông báo cam kết là một cách nhanh chóng để biết những gì đang diễn ra trong lần đăng ký đó và sẽ giúp các nhà phát triển khác trong nhóm của bạn khi họ muốn biết khía cạnh nào của mã đã thay đổi trong lần sửa đổi nào (vì lý do có thể).

Trong một lưu ý liên quan, tôi sẽ đề nghị chỉ định số trường hợp theo dõi lỗi (tôi hy vọng bạn đang sử dụng một) trong thông báo cam kết, để nó có ích cho tương lai để dễ dàng theo dõi mọi thứ.


1

Vì vậy, người duy trì mã đó 1 năm sau biết ai sẽ săn lùng mã đó. :)


Đó là những gì blametính năng của vcs dành cho.
Peter Taylor
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.