2011-12-08 21 views
12

Tôi có một repo trung tâm và một repo địa phương. Repo có nhánh "default" và một nhánh có tên là "mybranch". Nếu tôi làm việc tại các chi nhánh đặt tên và muốn thỉnh thoảng nhập các thay đổi của tôi vào mặc định và sau đó tiếp tục làm việc tại các chi nhánh đặt tên tôi nên làm điều này:Có nên hợp nhất một chi nhánh được đặt tên vào nhánh mặc định trước hoặc ngược lại không?

  1. kéo mới nhất từ ​​repo trung vào repo địa phương của tôi
  2. trong khi làm việc trong mybranch, làm một "hg merge default" sáp nhập mặc định vÀO mybranch
  3. cam kết tại địa phương
  4. sau đó làm "hg update default" và "hg merge mybranch" sáp nhập mybranch vÀO mặc định
  5. cam kết tại địa phương
  6. 0.123.
  7. đẩy vào trung tâm repo e HOẶC

làm tương tự như trên, nhưng chuyển # 2 với # 4? (Vì vậy mà tôi đang sáp nhập mybranch VÀO mặc định đầu tiên?

Trả lời

6

Cách bạn có nó bây giờ (merge default vào mybranch đầu tiên) là cách ưa thích của tôi.

tôi có xu hướng sử dụng các chi nhánh để cô lập các thay đổi cho một tính năng đặc biệt hoặc tái cấu trúc, vì vậy tốt nhất để mang lại changesets từ default vào chi nhánh tên là đều đặn. Bằng cách này thay đổi các tên chi nhánh của được giữ ở nhật liên quan đến các chi nhánh default.

+0

Cảm ơn-- Tôi đã hỏi vì trong một số biểu đồ, tôi đã thấy nó theo cách khác mà bạn hợp nhất vào mặc định trước tiên. Vì vậy, tôi không biết nếu có một lý do cho điều này. Ví dụ: http://nvie.com/posts/a-successful-git-branching-model/ (đây là Git, nhưng bạn nhận được quan điểm của tôi ...) – BestPractices

+0

Sơ đồ đó là tốt bởi vì thay đổi duy nhất xảy ra [gần như ] trực tiếp đến nhánh 'master' là hotfix đó cũng được hợp nhất vào nhánh' develop'. Một cách có thể được thực hiện là cam kết thay đổi hotfix trên nhánh 'master' và sau đó hợp nhất' master' vào 'develop'. Lý do duy nhất 'master' không được hợp nhất thành' develop' nhiều hơn là bởi vì không có gì thay đổi trên 'master' mà cần phải được tích hợp. Một phần quan trọng khác để xem xét là sự tương tác giữa các nhánh 'phát triển' và' phát hành' trong sơ đồ đó. –

+0

Khi tôi nhìn vào sự tương tác giữa "phát triển" và "các nhánh phát hành" trong sơ đồ đó, có vẻ như tôi "phát triển" đầu tiên được sáp nhập vào "nhánh phát hành" và sau đó "nhánh phát hành" được hợp nhất vào "phát triển" nhánh mà ngược lại với cách mà tôi hiện đang làm việc (nếu bạn nghĩ "nhánh phát hành" tương đương với "mặc định" và "phát triển" tương đương với "nhánh của tôi". Tôi có hiểu sai sơ đồ đó không? – BestPractices

11

bạn viết rằng bạn

muốn thỉnh thoảng hợp nhất các thay đổi của tôi thành mặc định và sau đó tiếp tục làm việc trong chi nhánh có tên

Bạn thường không hợp nhất chi nhánh vào chi nhánh default trừ khi tính năng được thực hiện. Có lẽ đó là những gì bạn có nghĩa là gì?

Chỉ cần để tham khảo, các công việc được đề nghị là làm

  1. Tạo tính năng chi nhánh
  2. Do công việc của bạn có
  3. Thường xuyên (mỗi vài ngày) nhập các thay đổi từ default vào chi nhánh tính năng:

    1. hg pull để có được những thay đổi mới nhất từ ​​các nhà phát triển khác
    2. hg merge để tích hợp các thay đổi mới nhất vào tính năng chi nhánh của bạn
  4. Khi chi nhánh tính năng là tất cả được thực hiện, bạn nhập nó trở lại vào default:

    1. hg pull
    2. hg update default để kiểm tra các chi nhánh bạn muốn hợp nhất thành
    3. hg merge myfeature để thực hiện việc hợp nhất

Việc hợp nhất cuối cùng sẽ rất nhỏ kể từ khi hợp nhất thông thường default vào nhánh tính năng đảm bảo rằng chỉ có một khoảng cách nhỏ từ hai nhánh nhánh trở lại tổ tiên chung.

+1

Đó là sự thật nếu "tính năng" của bạn đủ nhỏ. Nhưng nhiều người trong chúng ta làm các tính năng tăng dần, hoàn thành các phần với một tiêu chuẩn hợp lý ngay cả khi không hoàn toàn "thực hiện". –

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