Đóng các chi nhánh Hg


103

Khi sử dụng hg branch FeatureBranchNamevà xuất bản nó lên một đại diện trung tâm được chia sẻ giữa các nhà phát triển, có cách nào để cuối cùng đóng lại FeatureBranchNamethời điểm sự phát triển của nó chính thức được hợp nhất với nhánh mặc định không?

Nó cũng sẽ hữu ích nếu FeatureBranchNamekhông hiển thị khi thực hiện một hg brancheslệnh.

Câu trả lời:


158
hg commit --close-branch

nên đủ để đánh dấu một nhánh đóng cửa. (xem hg commit)

--close-branch

đánh dấu một nhánh là đã đóng, ẩn nó khỏi danh sách nhánh.

Xem thêm chủ đề này :

Kỳ vọng của tôi là tôi sẽ đóng cửa một chi nhánh vì quá trình phát triển này đã đi vào ngõ cụt và tôi không muốn phải bận tâm đến nó thêm nữa.
Do đó, khi một nhánh đã bị đóng, tôi sẽ không nhìn thấy nó (ví dụ: trong nhánh, đầu, nhật ký) trừ khi tôi yêu cầu rõ ràng xem các nhánh đã đóng.

Tôi nên lưu ý rằng tôi mong đợi một nhánh đã đóng vẫn ở trong kho lưu trữ; nó có thể hữu ích trong tương lai và commit --close-branchthông báo ít nhất phải giải thích lý do tại sao chi nhánh bị đóng cửa.
Tỉa cành hoàn toàn là một việc khác.


Lưu ý: hoạt động kinh doanh "đóng cửa chi nhánh" là một khía cạnh được coi là còn thiếu trong Git, khi so sánh với Mercurial :

Các nhánh trong git, chúng tôi luôn nói rằng, những thứ phù du sẽ được sử dụng và vứt bỏ, và theo như tôi biết thì git không có cách nào để cho đồng nghiệp của bạn biết rằng bạn đã hoàn thành một nhánh;
cách duy nhất để làm điều này là xóa nó hoặc hy vọng họ thấy cam kết hợp nhất cuối cùng và hiểu rằng chi nhánh đã đóng cửa để phát triển thêm.

[Trong Mercurial] Tuy nhiên, khi bạn hoàn thành một nhánh, bạn không thể xóa nó khỏi kho lưu trữ; thay vào đó, bạn đưa ra một cam kết đóng chi nhánh và Mercurial lưu ý rằng chi nhánh đã bị đóng. Nó sẽ vẫn là một phần vĩnh viễn trong lịch sử kho lưu trữ của bạn.


3
Có cách nào để đóng một nhánh không hiện tại không?
Thomas S.

@ThomasS. 5 năm sau, tôi không biết chắc. Tài liệu đã được cập nhật gần đây: evalurial.808500.n3.nabble.com/…
VonC

1
@ThomasS. vâng, câu trả lời này đã giúp tôi với vấn đề đó. hg debugsetparent <revision> hg branch <branchOfRevision> Lưu ý rằng thứ tự là quan trọng. Điều này sẽ làm cho repo của bạn nghĩ rằng nó đang ở trên bản sửa đổi mới, trong khi tất cả các tệp của bạn là từ bản ban đầu. Sau đó, bạn có thể sử dụng cam kết --close-branch, nhưng sử dụng tùy chọn -X * để tạo một cam kết trống. hg commit --close-branch -X * -m "Closing branch."
Maske

8

Tôi đã viết một tập lệnh đơn giản để hoàn thành việc đóng nhánh, các lệnh được tìm thấy tại PruningDeadBraches .

## Kịch bản ##

#!/bin/bash
#script to close the not required branch in mercurial

hg up -C $1
if [ $? -eq 0 ]; then
    echo "$1 is up"
else
    echo "branch not found, please recheck your argument"
    exit 1
fi 
# if we are here then the branch is up, so we do the following
hg commit --close-branch -m 'this branch no longer required' 
echo "$1 is closed"
hg up -C default
echo "default is up" 

Làm thế nào để

Di chuyển đến bản sao cục bộ của kho lưu trữ và chạy tập lệnh này bằng cách đưa ra một đối số. Ví dụ:

$./the_script_above.sh bad_branch_name_to_close

Nó làm gì

Điều này thực hiện như sau:

  1. Nếu nhánh tồn tại, nó cập nhật lên nhánh đã cho hoặc nếu tồn tại với một thông báo lỗi.
  2. Nó đóng cửa chi nhánh.
  3. Cập nhật cho nhánh mặc định.
  4. Dừng lại.

Tập lệnh không xử lý các nhánh có khoảng trắng trong tên.
Jared

@Jared bạn có thể chạy một lệnh độc lập với chi nhánh của mình không. Đối với ví dụ: $ hg update yourbranchnamecontainingspace. Tôi nghĩ rằng chúng ta có thể tạo một tên chi nhánh có khoảng trắng, tuy nhiên bạn sẽ gặp lỗi phân tích cú pháp khi chạy các lệnh nhẹ nhàng như cập nhật . Bạn có thể muốn xem xét việc thoát ký tự khoảng trắng trong khi chuyển tên nhánh làm tham số cho tập lệnh. Chúc mừng.
Roshan Poudyal

không bị echo "$1 is up"sao chép ở đây? Trong thenvà sau fi? Ngoài ra, tập lệnh như vậy có thể hữu ích nếu hỗ trợ một tùy chọn để hợp nhất thành mặc định cùng một lúc
YakovL

1
@YakovL vâng =). Cảm ơn bạn đã thông báo. Tôi đã cập nhật kịch bản. Tất nhiên nó sẽ rất hữu ích cho tùy chọn hợp nhất, tôi sẽ cố gắng cập nhật trong thời gian tới nhưng cho đến khi đó bạn có thể mở rộng các kịch bản để khẩu vị của bạn =)
Roshan Poudyal
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.