Nếu chúng ta chỉ làm việc với một nhánh trong Subversion, chúng ta có nên bận tâm không? Chúng ta không thể làm việc trên thân cây để tăng tốc mọi thứ sao?
Đây là cách chúng tôi phát triển với Subversion:
- Có một thân cây
- Chúng tôi tạo ra một nhánh phát triển mới
- Chúng tôi phát triển một tính năng mới trên chi nhánh đó
- Khi tính năng được thực hiện, nó được hợp nhất trong thân cây, nhánh bị loại bỏ và một nhánh phát triển mới được tạo từ thân cây
Khi chúng tôi muốn phát hành để sản xuất, chúng tôi tạo một thẻ từ thân cây. Sửa lỗi được thực hiện trên một nhánh từ thẻ đó. Lỗi này sau đó được hợp nhất trong thân cây.
Đây là lý do tại sao chúng tôi tạo một nhánh phát triển mới sau khi một tính năng được thực hiện. Bằng cách này, lỗi được bao gồm đủ sớm trong mã mới của chúng tôi.
Dưới đây là một sơ đồ cần làm rõ:
Bây giờ, có một cảm giác đây không phải là cách làm việc hiệu quả nhất. Chúng tôi xây dựng tại địa phương trước khi chúng tôi cam kết, mất khoảng 5-10 phút. Bạn có thể hiểu rằng đây là một thời gian chờ đợi khá lâu.
Ý tưởng của một nhánh phát triển là thân cây luôn sẵn sàng phát hành. Nhưng điều này không còn đúng trong tình huống của chúng ta nữa. Đôi khi, một tính năng gần như đã sẵn sàng và một số nhà phát triển sẽ bắt đầu mã hóa tính năng tiếp theo (nếu không, họ sẽ ngồi chờ đợi một hoặc hai nhà phát triển hoàn thành và hợp nhất).
Sau đó, khi tính năng 1 kết thúc, nó được hợp nhất vào thân cây, nhưng có một số cam kết của tính năng 2 đi kèm.
Vì vậy, chúng ta thậm chí có nên bận tâm với nhánh phát triển, vì chúng ta chỉ có một nhánh? Tôi đã đọc về sự phát triển dựa trên thân cây và sự trừu tượng hóa chi nhánh, nhưng hầu hết các bài viết tôi thấy tập trung vào phần trừu tượng hóa chi nhánh. Tôi có ấn tượng rằng những thay đổi lớn sẽ kéo dài qua một số bản phát hành. Đây không phải là vấn đề chúng ta gặp phải.
Bạn nghĩ sao? Chúng ta chỉ có thể làm việc trên thân cây? Trường hợp xấu nhất là (tôi nghĩ) rằng chúng ta sẽ phải tạo một thẻ từ thân cây và chọn những cam kết mà chúng ta cần, bởi vì một số cam kết / tính năng chưa sẵn sàng sản xuất.