Khi di chuyển từ thứ này sang thứ khác, chỉ có hai điều bạn cần xác định:
- Mục tiêu của bạn là gì
- Làm thế nào để đến đó (kế hoạch di chuyển)
Phần đầu tiên, đáng buồn thay, thường bị bỏ qua hoặc cách quá mơ hồ. Bạn không thể đơn giản nói rằng những gì bạn có là một mớ hỗn độn và bạn muốn tổ chức nó. Điều đó có nghĩa là gì? Tất cả mọi người sẽ có một cách giải thích khác nhau (hay còn gọi là: mỗi dev nghĩ rằng mình hay mình cách làm việc là tốt nhất).
Rất có thể, tất cả các chi nhánh bạn đang phục vụ hoặc đã phục vụ một mục đích. Nếu không có một quy trình mục tiêu được xác định rõ ràng, mọi người sẽ tiếp tục làm những gì phù hợp với họ theo cách nó phù hợp nhất với họ (và đúng như vậy).
Ví dụ: mục tiêu của bạn phải được xác định rõ ràng như Vincent Driessen định nghĩa "mô hình phân nhánh Git thành công" của anh ấy . Nếu bạn nhìn vào mô hình này, nó rất chính xác: Nó nói nơi mã ổn định nên được phát triển và nơi các tính năng không ổn định nên được phát triển. Nó cũng cho biết làm thế nào - và khi nào - để phân nhánh, cập nhật và hợp nhất trở lại. Bạn biết mỗi chi nhánh để làm gì và phải làm gì với chúng. Chúng tôi sử dụng một biến thể của những gì được đưa ra bởi Vincent và biến thể của chúng tôi được xác định trong wiki của chúng tôi.
Điểm quan trọng là để tất cả các nhóm hiểu và đồng ý về một mục tiêu. Có thể đáng để nhắc nhở mọi người rằng bạn không tìm kiếm mô hình phân nhánh yêu thích cá nhân của họ, nhưng một mô hình mà tất cả các thành viên trong nhóm có thể đồng ý và sử dụng dễ dàng.
Khi bạn có mục tiêu của mình, bạn sẽ có thể xây dựng kế hoạch di chuyển của mình. Kế hoạch đó có thể dài hoặc ngắn như bạn muốn. Tôi đã thấy mô hình phân nhánh như vậy áp đặt qua đêm; ở những nơi khác, nó đã được thực hiện trong hơn 2 hoặc 3 lần chạy nước rút. Nó không quan trọng với tôi, miễn là chúng tôi đang cải thiện.
Bạn có thể bắt đầu với các nhánh "lớn nhất" hoặc quan trọng hơn. Ví dụ: "từ giờ trở đi, chủ phải luôn ở trạng thái được triển khai trong prod và nhánh dev phải luôn biên dịch" (hoặc bất cứ quy tắc nào của bạn). Sau đó, thực thi các phiên bản (phát hành) chi nhánh. Sau đó, thực thi các nhánh tính năng. Sau đó, áp đặt mã đóng băng trên nhánh phiên bản, nếu nó có ý nghĩa.
DevOps là tất cả về giao tiếp, cởi mở và hiệu quả. Những khái niệm này phải được ghi nhớ và truyền đạt trong suốt quá trình.
Tôi sẽ đề nghị mời một số người bên ngoài nhóm phát triển tham gia cuộc họp quy trình với tư cách quan sát viên. Ops hoặc quản lý cấp trung có thể có một hoặc hai điều để nói về mô hình của bạn. Nhu cầu của các nhà phát triển nên được ưu tiên, nhưng nếu mô hình phân nhánh không thể phù hợp với cách quản lý mọi thứ, bạn nên biết ngay bây giờ và không phải trong một hoặc hai tháng nữa.
Nếu bạn có những đội thực sự lớn, hãy cố gắng bao gồm tất cả mọi người. Với các đội rất lớn, dù sao bạn cũng sẽ có hai hoặc ba cuộc họp. Vì vậy, mời các trưởng nhóm trong phòng, nhưng có sẵn một webcast và cho mọi người biết về nó. Nếu bất cứ ai có một đề nghị hoặc mối quan tâm, họ sẽ có thể nói điều đó với trưởng nhóm của họ và nếu nó hợp lệ, nó sẽ được giải quyết trong cuộc họp thứ hai hoặc thứ ba.