Khi nào nên phát triển các ngành?


11

Chúng tôi đang chuyển nhóm của dự án của chúng tôi từ việc sử dụng một nhánh Chính / Thân, sang nhiều nhánh Phát triển / Công việc cần được sáp nhập thường xuyên vào Chính. Chúng tôi đang dựa trên quy trình mới của chúng tôi về bài viết nàyHướng dẫn phân nhánh TFS (chúng tôi đang sử dụng TFS và Visual Studio 2010).

Hiện tại có từ 1 đến 5 người làm việc trong dự án bất cứ lúc nào. Main phải ổn định mọi lúc vì chúng tôi muốn tùy chọn phát hành bất cứ khi nào chúng tôi cần. Chúng tôi không có các lần chạy nước rút cố định - ít nhất là chưa - và tại thời điểm phát hành cứ sau 1-2 tuần.

Ngay tại thời điểm này, mỗi người đang sửa lỗi trên ứng dụng. Trong vài tuần nữa, chúng tôi sẽ bắt đầu phát triển một thành phần lớn mới cho ứng dụng.

Một điểm gắn bó mà chúng tôi đang tìm kiếm là khi các nhánh phát triển nên được tạo ra . Chúng tôi sẽ triển khai song song nhiều câu chuyện của người dùng tùy thuộc vào bộ kỹ năng của nhà phát triển. Chúng tôi đã nghĩ đến việc tạo một chi nhánh cho mỗi nhà phát triển nhưng điều đó không có ý nghĩa bởi vì sẽ luôn có một số nhu cầu hợp tác trong một phần công việc. Chúng tôi không thể có được với một nhánh phát triển vì chúng tôi sẽ muốn hợp nhất với Main trong khi công việc khác đã hoàn thành.

Có ai có một số hướng dẫn về điều này?


Chúa ban phước cho linh hồn của bạn vì đã sử dụng TFS và tạo ra các nhánh. Ở giai đoạn trước trong công ty của tôi, họ đã quyết định sử dụng TFS, và cuối cùng tất cả các nhà phát triển đã trở nên sợ hãi về quá trình hợp nhất mà việc phân nhánh đã biến thành Yếu tố sợ hãi lập trình.
Jordan

@Jordan: Một nỗi sợ không hoàn toàn vô căn cứ.
Robert Harvey

Câu trả lời:


9

Tôi không thích các nhánh tùy ý, ví dụ như các lỗi của Fred hoặc các lỗi của Harry. Tôi thấy thoải mái hơn nhiều với một tính năng (độc lập) một nhánh cho phép nhiều nhà phát triển hoạt động trên một tính năng; nhưng đối với tính năng này chỉ được hợp nhất khi hoàn thành.

Vì vậy, ngay bây giờ bạn chỉ cần nhánh "bugfix" nhưng một khi bạn bắt đầu phát triển, bạn nên tạo một nhánh cho mọi tính năng quan trọng. Theo cách đó, khi chúng được thực hiện, chúng có thể được hợp nhất và phát hành mà không bị phụ thuộc vào chức năng buggier khác.

Không chắc TFS tốt như thế nào khi sáp nhập nhưng tôi chắc chắn bạn sẽ biết sau vài tháng nữa :)


Điều này khá gần với cách chúng tôi đang làm nó ở nơi tôi làm việc. Nếu bạn chỉ đảm bảo hợp nhất một cách tôn giáo từ thân cây đến từng nhánh làm việc bất cứ khi nào thay đổi làm cho thân cây, nó hoạt động khá tốt. Ngoài ra, xem xét việc thiết lập các bản dựng tự động cùng một lúc. Biết rằng mỗi nhánh (như được lưu trữ trong kiểm soát nguồn) luôn ở trạng thái có thể xây dựng, làm cho mọi thứ dễ dàng hơn nhiều. Đối với việc hợp nhất bằng các công cụ của Visual Studio, nó hoạt động tốt cho đến khi bạn có những hàng dài cực kỳ với những thay đổi ở cả hai phía của hợp nhất ...
CVn

5

Chúng tôi không thể có được với một nhánh phát triển vì chúng tôi sẽ muốn hợp nhất với Main trong khi công việc khác đã hoàn thành.

Có vẻ như bạn đã biết rằng nhiều nhánh phát triển phải được tạo. Hai kịch bản có thể xảy ra trong tâm trí:

  1. Mỗi trong số năm nhà phát triển đang làm việc trên các phần độc lập của dự án (sửa lỗi) - Đảm bảo rằng một nhánh riêng được tạo cho mỗi nhà phát triển. Điều này đặt trách nhiệm và trách nhiệm lên từng nhà phát triển để đảm bảo tập hợp thay đổi của họ không xung đột với công việc của bất kỳ ai khác. Rất có khả năng một trong năm nhà phát triển của bạn sẽ phạm sai lầm. Nếu / Khi đó là trường hợp, nó không có ý nghĩa cho những người khác được giữ lên.
  2. Nhiều phát triển tính năng - Bất kể số lượng nhà phát triển làm việc trên một tính năng / lỗi cụ thể, những điều này nên được tách riêng. Một ví dụ về điều này có lợi là tất cả các cam kết mã là một phần của (các) tính năng đang được phát triển - không có dự đoán thứ hai liên quan.

1

Chi nhánh làm việc với DVCS

Chúng tôi sử dụng Mercurial để có nhánh công việc ngụ ý trên hộp nhà phát triển. Cam kết luôn được thực hiện cho không gian làm việc địa phương. Khi một phần công việc đáng tin cậy được hoàn thành, nó được đẩy lên máy chủ repo chính nơi nó được xây dựng và kiểm tra tự động.

Chúng tôi gần như không bao giờ tạo ra các nhánh rõ ràng, nhưng sau đó một lần nữa nước rút của chúng tôi không bao giờ dài hơn 1 tuần và các thẻ mất không quá 1-2 ngày để hoàn thành.

Ngoài ra, bạn có thể giảm thiểu nỗi đau hợp nhất bằng cách xâu chuỗi trong công việc từ các phần khác của mã hoặc các dự án khác để mọi người không phải thực hiện việc hợp nhất khó khăn mọi lúc.


0

Tôi đã sử dụng cả hai nhánh duy nhất cho mỗi câu chuyện và một nhánh trên mỗi bản phát hành (tất cả các nhà phát triển đăng ký câu chuyện của họ để phát triển và nếu bất kỳ trong số đó phá vỡ nhánh dev thì nó sẽ bị hỏng). Tôi rất muốn giới thiệu một nhánh cho mỗi câu chuyện nếu bạn không thích xung đột. Chi nhánh dev sẽ luôn duy trì ổn định cho tất cả các nhà phát triển và sẽ không có thời gian chờ đợi cho một nhà phát triển làm việc trên một đoạn mã mà nhà phát triển khác đã phá vỡ. Khi câu chuyện của bạn kết thúc, tất cả mã của bạn nằm trong chi nhánh của bạn. Bạn sẽ hợp nhất nó với dev nhưng không đăng ký và kiểm tra, trong trường hợp bạn gặp xung đột, bạn sẽ giải quyết nó và hỏi người mà bạn đang xung đột để tránh xóa mã của anh ấy. Sau đó hợp nhất để dev. Điều này giúp tất cả các nhà phát triển hoạt động trơn tru. Nó cũng phụ thuộc vào quy mô của công ty. Công ty chúng tôi có 200 nhà phát triển làm việc đồng thời trên một cơ sở mã, nhưng chi nhánh riêng cho câu chuyện của họ. Khi mã được hợp nhất vào nhánh dev, nhánh câu chuyện sẽ bị xóa ngay lập tức. Tôi hi vọng cái này giúp được. Cảm ơn


0

Nếu điều này dựa trên git, thì bạn chỉ cần tạo một nhánh cho mỗi lần sửa lỗi, sửa lỗi trong thời gian ngắn nhất, hợp nhất nhánh sửa lỗi với nhánh phát triển, sau đó đẩy thay đổi sang nhánh phát triển. Xem xét các yêu cầu kéo và sáp nhập phải là ưu tiên cao nhất , bởi vì bạn hoàn thành nó càng nhanh thì cơ hội hợp nhất không gây ra vấn đề. Sau khi hợp nhất, các nhánh này có thể bị xóa.

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.