Bảo quản kiểm soát phiên bản cam kết lịch sử so với Tái cấu trúc và Tài liệu


11

Nó hầu như không có gì để sử dụng lịch sử cam kết được duy trì bởi hệ thống kiểm soát phiên bản. Tuy nhiên, trong nỗ lực tái cấu trúc dự án lớn (hoặc sắp xếp lại / dọn dẹp), các chức năng và các lớp và thậm chí các không gian tên sẽ được di chuyển xung quanh; đôi khi một số tệp sẽ được hợp nhất với nhau và các tệp khác sẽ bị tách. Những thay đổi này thường dẫn đến việc mất lịch sử cam kết ban đầu của một vài tệp.

Theo ý kiến ​​cá nhân của tôi, việc duy trì tổ chức dự án quan trọng hơn việc giữ lịch sử mã nguồn. Tổ chức dự án tốt cho phép các tính năng mới được thêm liên tục với nỗ lực hợp lý, trong khi giá trị của lịch sử mã nguồn dường như không rõ ràng.

Hơn nữa, với việc sử dụng thử nghiệm đơn vị, các vấn đề hồi quy nhanh chóng được xác định. Miễn là phiên bản mới nhất tiếp tục đáp ứng tất cả các yêu cầu phần mềm, chúng ta có thực sự cần phải lưu giữ lịch sử của mã nguồn không?

Tôi hiểu rằng bất kỳ mã nguồn vận chuyển nào cũng phải được bảo tồn do cần phải cung cấp hỗ trợ cho khách hàng mà không yêu cầu họ thực hiện nâng cấp phiên bản chính. Nhưng ngoài điều này ra, có bất kỳ giá trị nào trong việc giữ lịch sử của mã nguồn cam kết không?

Liệu mã nguồn cam kết lịch sử có đóng vai trò nào trong việc liên lạc giữa các thành viên trong nhóm không? Điều gì sẽ xảy ra nếu chúng ta xóa bỏ lịch sử cam kết, nhưng thay vào đó dựa vào "mã nguồn" + "mã kiểm tra đơn vị" để liên lạc?

Có phải sự tồn tại của lịch sử cam kết khiến người ta tự mãn về tài liệu dài hạn về thông tin quan trọng về dự án, chẳng hạn như thay đổi thiết kế / yêu cầu chính và dòng suy nghĩ đã thúc đẩy những thay đổi đó?


3
Tùy thuộc vào hệ thống mã nguồn nào bạn sử dụng, lịch sử phiên bản sẽ được lưu giữ ngay cả khi di chuyển tệp và không có gì. Lịch sử cho các tập tin bị xóa vẫn nên được truy cập quá. Và cuối cùng, điều quan trọng là lịch sử của kết quả cuối cùng. Lớp X có thể là sự kết hợp của các lớp Y và Z, nhưng lịch sử sẽ cho bạn biết điều đó (đặc biệt nếu bạn có nhận xét đăng ký tốt) và bạn vẫn có thể theo dõi lại bản gốc. Am i thiếu cái gì ở đây?
Adam Lear

1
These changes often lead to the loss of the original commit history of a few files.Có một cái nhìn ví dụ như "git đổ lỗi" - không có gì bị mất. Đôi khi nó có thể khó tìm hơn một chút, nhưng nó luôn ở đó.
maaartinus

1
Trong một cấu trúc lại lớn, đáng để dành chút thời gian để suy nghĩ và lập kế hoạch cập nhật kiểm soát nguồn. Thông thường với một nỗ lực tối thiểu hoặc nhỏ thêm rất nhiều thông tin có thể được lưu giữ. ví dụ: nếu bạn chia một tệp thành 3 phần, trước tiên hãy giữ bản sao của bản gốc cho mỗi 3 bản thay thế của nó; sau đó tiếp tục cam kết sửa đổi ba ...
UuDdLrLrSs

Câu trả lời:


5

Để sử dụng lịch sử cam kết cho nhiều hơn các nhận xét loại "đã thực hiện" hoặc "lỗi cố định", nó phải được liên kết với hệ thống theo dõi vấn đề của bạn. Mọi thay đổi, mọi cam kết, nên có một số vấn đề liên quan đến nó để bạn biết những gì đã thay đổi, bởi ai và tại sao.

Miễn là phiên bản mới nhất tiếp tục đáp ứng tất cả các yêu cầu phần mềm, chúng ta có thực sự cần phải lưu giữ lịch sử của mã nguồn không?

Phần mềm đủ phức tạp hiếm khi có tất cả các yêu cầu được triển khai và tất cả các lỗi đã được sửa vì vô số lý do, vì vậy tôi nghĩ rằng khẳng định của bạn ở đây là, giả sử, lạc quan.

Giả sử bạn đang ở phiên bản 7.8 của chương trình. Nhưng bạn đang hỗ trợ, trong lĩnh vực này, 12 phiên bản hoạt động khác nhau, như 1.6, 2.2, 2.8, v.v. Mỗi trong số này sẽ không được nâng cấp lên phiên bản mới nhất vì nhiều lý do, vì vậy bạn đang hỗ trợ tất cả các bản sửa lỗi. Một khách hàng tìm thấy một lỗi trong bản phát hành 7.8 mới nhất của bạn. Bạn sửa nó trong 7.8. Làm thế nào để bạn biết có bao nhiêu bản phát hành khác cần phải được sửa chữa? Không có lịch sử nguồn và theo dõi vấn đề bạn không.


7

giá trị của lịch sử mã nguồn dường như không rõ ràng.

Tôi đã có các kỹ sư quay trở lại mã nguồn vài năm để tìm câu trả lời cho lý do tại sao một thứ gì đó lại như vậy. Đôi khi cách mọi thứ phát triển theo thời gian rất quan trọng để hiểu một lỗi, nhưng nó không phải là điều thường được nghĩ đến khi ghi lại mọi thứ (thậm chí không nhất thiết phải là tài liệu).

Ngoài ra, có thể có những lý do pháp lý rất tốt để giữ lịch sử mã nguồn. Hầu hết các công cụ lặn mã nguồn mà tôi phải làm (với tư cách là kỹ sư xây dựng / SCM) đã được yêu cầu bởi bộ phận pháp lý của công ty tôi.


1
Cá nhân tôi thấy rằng trong khi rất hiếm khi nhìn vào lịch sử, vào những dịp cần thiết, khả năng làm điều đó là vô cùng quý giá. Vì vậy, tôi ủng hộ việc bảo tồn lịch sử khi nó là thực tế để làm như vậy.
UuDdLrLrSs

3

Miễn là phiên bản mới nhất tiếp tục đáp ứng tất cả các yêu cầu phần mềm, chúng ta có thực sự cần phải lưu giữ lịch sử của mã nguồn không?

Nhưng ngoài điều này ra, có bất kỳ giá trị nào trong việc giữ lịch sử của mã nguồn cam kết không?

Có cho cả hai. Nó có thể hữu ích để biết khi nào một cái gì đó đã được thay đổi, bởi ai và tại sao. Nếu bạn mất lịch sử, khả năng của bạn để làm điều này bị ảnh hưởng.

Liệu mã nguồn cam kết lịch sử có đóng vai trò nào trong việc liên lạc giữa các thành viên trong nhóm không? Điều gì sẽ xảy ra nếu chúng ta xóa bỏ lịch sử cam kết, nhưng thay vào đó dựa vào "mã nguồn" + "mã kiểm tra đơn vị" để liên lạc?

Có nó làm. Cách tiếp cận "mã nguồn" + "mã kiểm tra đơn vị" không cho bạn biết ai / khi / tại sao.

Có phải sự tồn tại của lịch sử cam kết khiến người ta tự mãn về tài liệu dài hạn về thông tin quan trọng về dự án, chẳng hạn như thay đổi thiết kế / yêu cầu chính và dòng suy nghĩ đã thúc đẩy những thay đổi đó?

Tôi cho rằng bạn có thể nói rằng nó làm. Nhưng rất ít nhà phát triển từng ghi chép kỹ lưỡng những thay đổi trong yêu cầu / thiết kế. Và chắc chắn hầu như không ai ghi lại dòng suy nghĩ đã thúc đẩy sự phát triển ban đầu, hoặc những sửa đổi tiếp theo. Có lịch sử cam kết (và đặc biệt là các thông điệp nhật ký cam kết) và liên kết chéo đến hệ thống theo dõi vấn đề / lỗi ít nhất cung cấp cho bạn một cái gì đó để đi. Và điều đó tốt hơn là không có gì, hoặc một bộ ảnh chụp nhanh phát hành.


1
+1 Ngoài ra, việc dựa vào mã để liên lạc có nghĩa là thông tin sẽ có trong lịch sử cũng có mặt trong các bình luận, vi phạm DRY.
Larry Coleman

1
@ Lôi - đúng. Nhưng trong thực tế, vấn đề có thể là quá ít thông tin được ghi lại thay vì quá nhiều thông tin (hoặc trùng lặp).
Stephen C
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.