Cách được đề xuất để tách sự phát triển hiện tại khỏi sự phát triển bảo trì trong phần mềm kiểm soát phiên bản là gì?


10

Tôi có một số ứng dụng phần mềm được quản lý bằng Git. Tôi vừa phát hành phiên bản mới 2.x mà tôi dự định sẽ duy trì lâu dài (chủ yếu là sửa lỗi). Trong thời gian chờ đợi, tôi muốn bắt đầu làm việc trên phiên bản 3.x. Cách được đề nghị để quản lý này là gì? Tôi có nên tạo một nhánh cho phiên bản 2.x và có sự phát triển 3.x trên bản gốc không? hay cách khác?


Có một ngành khác nhau để phát triển và ổn định.
Oded

Vì vậy, những gì thường đi vào chi nhánh chủ? (cho đến bây giờ tôi luôn làm mọi thứ ở đó)
laurent

Bạn cần phải quyết định những gì bạn muốn mastercó nghĩa. Nó chỉ là một nhãn hiệu.
Oded

Câu trả lời:


13

Một cách làm rất thú vị đã được mô tả ở đây: Một mô hình phân nhánh Git thành công

Tôi thấy nó rất hấp dẫn, nhưng vẫn chưa thực sự sử dụng nó.

Rất tốt, như đã yêu cầu một bản tóm tắt (rất) ngắn về những gì bài báo nói:

  • Chi nhánh chính chỉ đại diện cho các cột mốc đã hoàn thành (ví dụ: Phiên bản 1.0, 1.1, 1.2, v.v.)
  • Phát triển được thực hiện trong nhánh riêng của nó (được đặt tên một cách thuận tiện là "phát triển", ai có thể nghĩ?). Nhánh phát triển được sáp nhập trở lại vào nhánh Master, bất cứ khi nào một phiên bản hoàn chỉnh tính năng được thực hiện.
  • Phân nhánh từ phát triển là các nhánh tính năng. Chúng đại diện cho các tính năng duy nhất cho phiên bản tiếp theo (hoặc bất kỳ tương lai). Họ hợp nhất trở lại với các chi nhánh phát triển.
  • Một nhánh khác đến từ sự phát triển là nhánh "phát hành". Đây là một nhánh đại diện cho một phiên bản phát hành gần như hoàn chỉnh, trong đó chỉ có các chi tiết nhỏ phải được làm sạch. Nó hợp nhất với nhánh phát triển và cuối cùng là nhánh Master
  • Chi nhánh "Hotfix" từ nhánh chính nếu bạn tìm thấy một lỗi nghiêm trọng trong một trong các bản phát hành của mình (tức là "Nếu việc sử dụng nhập mã konami, chương trình của chúng tôi sẽ định dạng lại ổ cứng chính ..."). Nó phân nhánh từ bản phát hành lỗi và khi sửa xong được sáp nhập trở lại vào nhánh chính VÀ nhánh lệch.

Đó là tóm tắt của nó, nhưng tin tôi đi, bài báo mô tả nó chi tiết hơn, và với đồ họa trực quan hữu ích, nó dễ hiểu hơn nhiều.


2
Bạn nên bao gồm một số lời giải thích về đề xuất của bạn trong câu trả lời, tốt nhất là mọi người sẽ không phải theo liên kết để có được ý tưởng tổng thể về mô hình. Liên kết có thói quen xấu là đi lung tung, và câu trả lời nên tự đứng vững ...
yannis

+1 Khá nhiều những gì chúng ta sử dụng tại nơi làm việc và nó thực sự hoạt động.
Ed James

1
Tôi tin rằng điều này thường được gọi là mô hình "thân cây ổn định" hoặc "nhánh tính năng".
sleske

"Chi nhánh chính chỉ đại diện cho các cột mốc đã hoàn thành (ví dụ Phiên bản 1.0, 1.1, 1.2, v.v.)" Tôi sẽ không muốn một nhánh chính có các phiên bản 1.0, 1.1, 1.2, 2.0, 1.3, 2.1, 1.4, 2.2, 3.0, 1.5 in thứ tự đó, sẽ thực sự khó hiểu. Tôi đoán là có một giả định ngầm định rằng có nhiều nhất một luồng phát hành được thực hiện, đó không phải là trường hợp trong thực tế của tôi. Có những người chấp nhận sớm và những người muốn một cái gì đó ổn định hơn.
AProgrammer

Chà, về lâu dài một chi nhánh không còn gì nữa sau đó là một nhãn hiệu để giúp bạn dễ dàng biết những gì đang xảy ra ở đó. Vì vậy, nếu bạn không thích nó theo cách này, không có gì ngăn bạn sử dụng nhánh Master chỉ cho các bản phát hành ổn định của thị trưởng và có Chi nhánh "Thử nghiệm" (hoặc bất cứ điều gì bạn muốn gọi nó) cho các bản phát hành gia tăng nhỏ hơn.
Sorcy

5

Nguyên tắc của tôi là chi nhánh càng ngắn thì càng sâu trong cấu trúc chi nhánh và tên của nó sẽ càng cụ thể. Chi nhánh càng dài thì càng nông, nó sẽ nằm trong cấu trúc chi nhánh và tên chung của nó sẽ là.

Vì vậy, bạn giữ bản gốc của mình trong phiên bản dài hơn (3.X) và bạn tiếp tục đặt tên cho nhánh này với một tên chung (chính, thân, devel, ...) và không phải là một tên cụ thể (tên mã phát hành hoặc số phát hành thậm chí tệ hơn quá phụ thuộc vào thực tế vào quyết định đánh dấu muộn)

Nó không quan trọng lắm trong một hệ thống như git có không gian tên phẳng cho các nhánh và nơi các nhánh tương đương. Nó quan trọng hơn với một hệ thống như Clearcase có không gian tên phân cấp cho các nhánh (tên đầy đủ của nhánh V4 kết thúc là chính / v1 / v2 / v3 / v4 ...)


+1 ngoại trừ tôi không biết ý nghĩa thực sự sâu sắc và nông cạn trong bối cảnh này, có lẽ bạn có thể mở rộng về các điều khoản đó một chút?
Michael Durrant

Nghĩ đến những nhánh làm cây. Họ có thể đi ra khỏi thân cây hoặc chi nhánh khác. Nông có nghĩa là số bước phân nhánh giữa nhánh và thân cây nhỏ, sâu có nghĩa là số bước phân nhánh là quan trọng. Những gì nhỏ và quan trọng chủ yếu là tương đối, nhưng tôi đã thấy các kế hoạch mà mỗi bản phát hành mới là một bước xa hơn so với trước đó từ thân cây. Nếu bạn đang sử dụng một không gian tên phẳng, điều đó không quá tệ. Nếu không gian tên được phân cấp (Clearcase, CVS, RCS, Perforce cũng có thể được sử dụng theo cách như vậy), bạn sẽ có được tên dài hơn và dài hơn.
AProgrammer
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.