2011-08-04 46 views
5

Đây có phải là quy trình làm việc bình thường không?Tại sao cờ - nhánh mới cần thiết?

[default] $ hg branch foo 

[foo] $ [... some commits ...] 

[foo] $ hg update default 

[default] $ hg merge foo 

[default] $ hg commit -m "merged foo" 

[default] $ hg push 
abort: push creates new remote branches: foo! 
(use 'hg push --new-branch' to create new remote branches) 

Cách khác lý tưởng để thực hiện phân nhánh → hợp nhất → đẩy là gì?

+1

suy đoán, bởi vì nội bộ một chi nhánh mới là một đầu mới, và hg balks lúc gửi lên người đứng đầu mới với tùy chọn -f (lực). –

+1

Khoảng cách trong sự hiểu biết của bạn có thể là trong Mercurial (không giống như git) mặc dù bạn đã hợp nhất foo thành mặc định, bạn vẫn gửi một số changesets có thuộc tính branch bất biến là 'foo'. Trong git tên foo sẽ không bao giờ thoát khỏi hệ thống cục bộ của bạn bằng những lệnh đó, nhưng trong Mercurial nếu bạn muốn hành vi đó bạn sử dụng bookmark không được đặt tên là branch. –

Trả lời

6

Triết lý thương xót là bạn không nên đẩy những thứ khiến người dùng khác của kho lưu trữ khó hơn. Liên quan đến câu hỏi này là nhiều người làm cho các nhà phát triển khác khó hơn, vì sau đó họ sẽ cần hợp nhất các thay đổi của bạn. Do đó theo mặc định, các đầu mới sẽ bị máy chủ từ chối. Tùy chọn -f được sử dụng để cho phép đẩy đầu mới.

Tuy nhiên, trường hợp đẩy nhánh mới có tên là khá khác nhau về mặt khái niệm để đẩy đầu mới trên cùng một chi nhánh. Nhiều luồng công việc (bao gồm cả tôi) thực hiện từng nhiệm vụ trên một chi nhánh được đặt tên riêng biệt. Tùy chọn --new-branch cho phép bạn đẩy chi nhánh mới, đồng thời từ chối người đứng đầu mới trên các chi nhánh hiện có. Nó cũng khác (như bạn đã thấy) bởi vì nó cần thiết ngay cả khi nhánh mới không tạo ra một cái đầu mới (do sáp nhập).

Cảm giác cá nhân của tôi là các chi nhánh mới nên được cho phép theo mặc định, nhưng các nhà phát triển thủy ngân thích khác.

3

Đây là điều một lần. Chỉ cần sử dụng --new-branch lần đầu tiên bạn đẩy nhánh (mới). Nó bình thường.

Mọi lần đẩy khác có thể giữ nguyên là hg push, không có cờ --new-branch.

+0

nếu tôi làm một '--close-branch' để loại bỏ nhánh có tên trước khi push? Tôi không nên hủy bỏ việc này phải không? Nó chỉ xảy ra với tôi bây giờ. –

0

Điều đó tùy thuộc vào chi nhánh được sử dụng.

Được sử dụng nội bộ trong bản sao kho lưu trữ của riêng bạn, bạn có thể thực hiện các thay đổi đối với chi nhánh của mình miễn là bạn phát triển trên đối tượng địa lý của mình.

Sau khi hoàn tất, bạn sẽ phải đầu tư một số công việc để theo dõi về những nỗ lực của người khác, những người có thể đã làm thay đổi nào trên các chi nhánh mặc định

Sau đó, bạn nên cập nhật những thay đổi của họ, giải quyết xung đột cam kết của bạn phần. Chuyển sang mặc định và đặt thành phần đối tượng địa lý của chi nhánh mặc định bằng cách hợp nhất các thay đổi của bạn. Bây giờ bạn có thể đóng chi nhánh của bạn, cam kết các công cụ và đẩy nó!

+1

Tôi đã sử dụng hg cho * hai năm *, và tôi không hiểu ý bạn là gì. Bạn đang trả lời câu hỏi? –

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