2010-10-06 41 views
5

Tôi làm việc cho một công ty tạo một công cụ dựa trên web. Là một phần công việc của tôi, tôi được giao nhiệm vụ phát hành kỹ thuật cho sản phẩm này (một thứ mà trước đây tôi chưa bao giờ làm). Tôi đã thiết lập hệ thống sau bằng SVN (Rất tiếc, chúng tôi không thể sử dụng kho lưu trữ khác trước khi ai đó đề xuất chuyển sang GIT hoặc lực lượng hoặc một trong số các tùy chọn khác!)Chiến lược quản lý phát hành tốt hơn?

Thân cây là gì trên máy chủ sản xuất mọi lúc Có 2 chi nhánh mở tại bất kỳ thời điểm nào 1) Bảo trì. Điều này được phát hành vào mỗi Thứ Tư 2) Chi nhánh Sprint. Điều này được phát hành bởi hàng tuần (vào thứ Tư với các tuần đó bảo trì chi nhánh)

Trước khi phát hành, tôi hợp nhất các chi nhánh trong tuần đó vào thân cây.

Tôi thấy rằng khi chạy svn merge, nó thường tạo ra rất nhiều vấn đề khi nó hợp nhất. Do đó, chúng tôi đã chuyển sang cuộc họp kết hợp thủ công mỗi tuần một lần, mất từ ​​10 phút đến 1 giờ, nơi tôi đặt hai thư mục trên hệ thống của mình và yêu cầu mỗi nhà phát triển "là sự thay đổi này của bạn? giữ?"

Hệ thống này chắc chắn KHÔNG phải là lý tưởng.

Ai đó có thể đề xuất điều gì đó tốt hơn?

+0

Hrm ... Vâng, bạn có thể sử dụng git-svn để trợ giúp việc hợp nhất thủ công ... –

+1

vì vậy ummmm bạn đã không đọc bài đăng? Không thể sử dụng Git. – llaskin

+1

Bạn sử dụng phiên bản SVN nào? Với phiên bản mới nhất của svn (máy khách và máy chủ) có một tính năng theo dõi hợp nhất. Nó không tuyệt vời, nhưng nó giải quyết một số vấn đề. – David

Trả lời

2

Trước hết, SORRY! Tôi không ghen tị với vị trí của bạn.

Tôi đã làm việc cho ngân hàng quốc tế thực hiện thiết kế lại web cho Đạo luật thẻ liên bang. Tình huống tương tự như bạn, chỉ có khả năng trên một quy mô lớn hơn nhiều. Chúng tôi đã có 3 người không làm gì ngoài việc phát hành quản lý theo một lịch trình rất giống nhau. Điều khiến nó trở nên khả thi (trong một vài tuần tôi làm việc với vài trăm tập tin cùng một lúc) là việc các nhà phát triển sáp nhập vào thân cây, sau đó thân cây được triển khai để sản xuất như một bản sao .... chúng tôi đã không kiểm tra trực tiếp vào sản xuất. Vì vậy, từ quan điểm phát hành, bạn có thể giúp các nhà phát triển corral kiểm tra công việc của họ (sự khác biệt giữa việc thực hiện "cập nhật" hoặc trả lời "đây có phải là phiên bản phù hợp không?") cập nhật sẽ được phát hành trực tiếp, điều này có vẻ như là một vấn đề lớn. Chắc chắn, các nhà phát triển có thể phàn nàn một chút, nhưng đã ở vị trí đó nó thực sự không quá tệ. Và nếu bạn làm cho mình sẵn sàng trả lời bất kỳ câu hỏi nào có thể xuất hiện, nó sẽ ổn thôi. Nó làm việc cho các nhà phát triển 1.200 lẻ chúng tôi đã làm việc tại 4 địa điểm trên toàn quốc.

Điều khác mà bạn mua này là thời gian để kiểm tra. Nếu mã không được hợp nhất trước khi nó hoạt động, làm thế nào nó có thể được kiểm tra trong ngữ cảnh của hệ thống lớn hơn? Tôi chắc chắn hy vọng câu trả lời không phải là nó không được thử nghiệm!

+0

đây không phải là câu trả lời cho câu hỏi của tôi, mà đúng hơn, là một mô tả tốt về lý do tại sao tôi làm điều này. – llaskin

3

Tuyên bố "có 2 chi nhánh mở tại bất kỳ thời điểm nào" là phiền hà đối với tôi. Ít nhất trong các nhánh thực hành của tôi được tạo ra để ổn định trước khi phát hành hoặc sửa lỗi, và chúng thường ngắn ngủi.

Câu hỏi của tôi là - bạn sử dụng thân cây để làm gì? Nó không nên là những gì được sản xuất, thay vì sản xuất nên chạy một phiên bản được gắn thẻ (do đó phát hành).

Sự cố hợp nhất của bạn là tự gây ra, theo như tôi thấy.

+0

hãy để tôi làm rõ: sản xuất đang chạy thân cây. Sản xuất không bao giờ được thay đổi trực tiếp. thay vì thân cây bị thay đổi, và sau đó được đẩy vào sản xuất. Bản phát hành không được gắn thẻ – llaskin

+2

Sản xuất đang chạy thân cây, đó là một vấn đề trong cuốn sách của tôi. Đối với tôi thân cây là cạnh chảy máu, nơi sự phát triển thực sự xảy ra, không phù hợp với môi trường sản xuất ổn định. Sản xuất phải chạy một phiên bản được gắn thẻ - một lần nữa, đó là những gì chúng tôi làm ở đây, một số có thể không đồng ý. –

+0

Có, thân cây "chảy máu cạnh", còn được gọi là "Nó không biên dịch ở đây! Ai cam kết điều đó?" – David

1

Chiến lược phân nhánh lý tưởng cho trường hợp này là. Phát triển mới nhất trong thân cây và cho mỗi bản phát hành cắt một nhánh ra khỏi nó và gọi nó là một nhánh phát hành bảo trì. Tuy nhiên trong trường hợp bảo trì của bạn xảy ra trong thân cây. Phát triển mới nhất diễn ra trong chi nhánh.

Giữ chiến lược phân nhánh sang một bên. Dưới đây là một số gợi ý để cải thiện tình hình hiện tại.

  1. Khi bạn nói thay đổi liên quan đến sản xuất đầu tiên xảy ra trong thân cây, tôi cho rằng nó sẽ là tối thiểu. Vậy tại sao bạn không hợp nhất mọi thay đổi liên quan đến sản xuất vào hai nhánh mở khác này một cách thường xuyên. Tôi sẽ nói một lần một ngày, nó cũng có thể thường xuyên hơn hoặc ít thường xuyên hơn. bạn sẽ có thể đánh giá tốt hơn. Điều này cũng sẽ cung cấp cho người đứng đầu tốt hơn cho các nhà phát triển những thay đổi xảy ra trong sản xuất, giảm xung đột. Ngoài ra nếu có xung đột, điều này sẽ được xử lý bởi chính các nhà phát triển trên chi nhánh.

  2. Bạn có thể nghĩ đến với một số loại khung

    • nên có thể xác định đó là những chi nhánh mà đòi hỏi sự cam kết thực hiện trong cốp xe.

    • Có thể có một kịch bản lệnh móc cam kết sẽ kiểm tra xem cam kết có trong thân cây không và thực hiện hợp nhất svn với nhánh và xem liệu chúng có phải là xung đột hay không.

    • Nếu hợp nhất thành công, sau đó cam kết thay đổi. Khác gửi thông tin cho bạn và nhà phát triển thích hợp đã cam kết nó (nó phụ thuộc vào cách bạn muốn giải quyết vấn đề này).

7

chi nhánh thân của bạn nên chứa tất cả các mã phát triển mới nhất, trong đó bao gồm các tính năng mới và chưa được kiểm tra và bất kỳ mã từ các chi nhánh khác. Đó là rất quan trọng là tất cả các mã sẽ được hợp nhất vào chi nhánh này.

Khi bạn đã sẵn sàng (hoặc nghĩ rằng bạn đã sẵn sàng) để thử nghiệm, hãy tạo một chi nhánh ổn định ngoài nhánh thân cây của bạn. Sử dụng nhánh này để kiểm tra và sửa lỗi. Không thêm bất kỳ tính năng hoặc cải tiến mới nào vào ứng dụng của bạn tại đây hoặc có thể làm mất ổn định mã hiện tại của bạn. Đừng quên hợp nhất các thay đổi được thực hiện trong nhánh này vào nhánh thân cây của bạn.

Khi bạn đã sẵn sàng phát hành (thử nghiệm của bạn đã hoàn tất), hãy tạo một chi tiết phát hành nhánh của nhánh ổn định của bạn. Đây là chi nhánh bạn phát hành vào sản xuất và duy trì/hỗ trợ nếu các lỗi/vấn đề được tìm thấy trong sản xuất. Như với nhánh ổn định, không thêm bất kỳ thứ gì mới vào nhánh này. Nhánh này thường được gắn thẻ để xác định nó trong quá trình sản xuất. Đừng quên hợp nhất các thay đổi được thực hiện trong nhánh này vào nhánh ổn định, để các nhánh phát hành khác được tạo ra từ nhánh ổn định có được lợi ích của bất kỳ sửa lỗi nào được thực hiện.

Các hệ thống phân cấp chi nhánh sẽ trông giống như sau:

trunk 
|-- stable 1.0 
    |-- release 1.0 
    |-- release 1.1 
|-- stable 2.0 
    |-- release 2.0 

Sử dụng hệ thống cấp bậc này, nhóm phát triển của bạn là miễn phí để phát triển trong ngành thân của bạn, trong khi ổn định và phát hành các chi nhánh cho phép duy trì các phiên bản hiện tại và trước đây của ứng dụng của bạn.

+0

ok nhưng làm thế nào để chúng hoạt động trên 2 bản phát hành ra khỏi cùng một chi nhánh cùng một lúc? chẳng hạn như bản phát hành chạy nước rút và bảo trì cùng một lúc? Với các chu kỳ phát hành khác nhau trên mỗi chi nhánh? – llaskin

+0

@llaskin: Tùy thuộc vào tình huống của bạn. Bạn có thể tạo hai nhánh ổn định riêng biệt và tạo một nhánh phát hành ở mỗi nhánh ổn định khi sẵn sàng để giải phóng. Ngoài ra, bạn có thể làm việc của một nhánh ổn định và tạo ra hai nhánh phát hành ngoài nhánh ổn định này khi sẵn sàng để giải phóng. Sự lựa chọn là của bạn, chỉ cần đảm bảo rằng tất cả các chi nhánh ổn định được giữ up-to-date, cũng như chi nhánh thân cây của bạn. – Bernard

Các vấn đề liên quan