Gần đây tôi đã bắt đầu đặt mã của mình dưới sự kiểm soát phiên bản (trong phòng thí nghiệm tôi đang làm việc, dưới SVN và mã của riêng tôi trong github (rõ ràng là với git)). Trước khi sử dụng kiểm soát phiên bản, tôi đã từng làm một cái gì đó như thế này. Tôi đã có một thư mục với tên của thư viện, bên trong nhiều thư mục có số phiên bản. Mỗi lần tôi muốn bắt đầu làm việc với phiên bản mới hơn, tôi sẽ tạo một bản sao của phiên bản cuối cùng, đổi tên thành phiên bản mới và bắt đầu thực hiện.
Tuy nhiên, điều này có vẻ dư thừa khi thư mục được đặt dưới sự kiểm soát phiên bản. Ngoài sự dư thừa, nếu ai đó muốn có phiên bản mới nhất, họ sẽ tải xuống tất cả các phiên bản nếu anh ta chỉ import
s / clone
s.
Bây giờ tôi thấy nhiều cách để làm điều này với kiểm soát phiên bản nhưng vì tôi chưa quen với nó, tôi không biết cái nào sẽ dễ bảo trì hơn.
Phương pháp 1: Sử dụng thẻ
Nếu tôi hiểu thẻ chính xác, bạn sẽ có chi nhánh chính của mình, bạn cam kết bất kỳ thay đổi nào bạn có và gắn thẻ chúng với một phiên bản. Sau đó, khi bạn muốn có một bản sao hoạt động của nó, bạn sẽ có được một bản sao với một thẻ nhất định. (sửa tôi nếu tôi sai)
Phương pháp 2: Phiên bản phân nhánh
Trong phương pháp này, nhánh chính sẽ là nhánh phát triển. Thỉnh thoảng một phiên bản ổn định được tạo ra (giả sử v1.2.0
), bạn tạo một nhánh cho phiên bản đó và không bao giờ cam kết với nó. Bằng cách đó, nếu bạn muốn tải xuống một phiên bản nhất định, bạn sẽ nhận được mã từ chi nhánh đó. Mặc dù tôi đã nói rằng bạn không bao giờ cam kết với nó, nhưng có thể sửa lỗi và cam kết với chi nhánh của phiên bản cũ để duy trì phiên bản cũ. Ví dụ: nếu phiên bản hiện tại là v2.0
, nhưng có những người muốn sử dụng v1.2
, bạn có thể lấy một chi nhánh khác v1.2
, cụ thể là v1.2.1
và sửa lỗi, hoặc chỉ giữ phiên bản giống như v1.2
và chỉ sửa lỗi.
Vì vậy, các chi nhánh sẽ trông như thế này:
v1.2.1 v1.2.2
/ /
v1.0.0 v1.2.0--------- v2.0.0
/ / /
-------------------------------------- dev
Bằng cách này, bạn có chi nhánh cho mỗi bản cập nhật phiên bản nhỏ. (Lưu ý rằng trong biểu đồ trên, v1.2.1 và v1.2.2 hoặc được tạo sau khi v2.0.0 được phát hành, vì vậy chúng không phải là một phần của sự phát triển giữa v1.2.0 và v2.0.0. Hãy nghĩ về nó như là hỗ trợ cho các phiên bản cũ hơn)
Phương pháp 3: Phát triển chi nhánh
Phương pháp này ngược lại với trước đây. Chi nhánh chính sẽ là phiên bản ổn định mới nhất. Bất cứ khi nào bạn đang làm việc trên một phiên bản mới, bạn tạo một nhánh (để phát triển), làm việc với mã của bạn và khi nó ổn định, hãy hợp nhất nó với nhánh chính.
Trong trường hợp này, các nhánh sẽ trông như thế này:
________ ____ ________________ _____ dev
/ \/ \/ \/
---------------------------------- latest_version
Có lẽ điều này cần phải được thực hiện kết hợp với các thẻ phải không?
Câu hỏi!
Dù sao, câu hỏi của tôi là dựa trên kinh nghiệm của bạn, phương pháp nào trong số những phương pháp này chứng tỏ thực tế hơn? Có một phương pháp tốt nhất được biết đến ngoài đó (mà có lẽ tôi đã không tự mình tìm ra)? Làm thế nào là những điều thường được thực hiện?