2011-12-24 17 views
16

Tôi đã quên gắn thẻ và phiên bản cũ hơn của các tệp của tôi bằng thẻ phát hành. Phiên bản cũ là tại r13, mới nhất là về r65. Tôi nhân bản kho lưu trữ mới nhất vào một thư mục mới, đã thực hiện "hg update -r13" để lấy mã cũ hơn mà tôi muốn gắn thẻ, sau đó thực hiện lệnh thẻ, nhưng nhận được thông báo:Mercurial, cách gắn thẻ phiên bản cũ của

hủy bỏ: không ở đầu chi nhánh (sử dụng -f để buộc)

Bạn có an toàn khi sử dụng tùy chọn -f trong trường hợp này không?

Trả lời

19

Tôi đoán bạn vẫn có thể thực hiện gắn thẻ ngay trong repo mà không cần cập nhật cho bản sửa đổi cụ thể.

thẻ hg -r 13 tagname

Xem chi tiết tại Mercurial wiki.

Tôi đã cố gắng thử nghiệm nó:

temp $ hg init . 
temp $ touch a.txt 
temp $ hg add a.txt 
temp $ hg commit -m "added a" 
temp $ hg status 
temp $ echo "sdwwdd" >> a.txt 
temp $ hg commit -m "modified a" 
temp $ echo "\neddwedd" >> a.txt 
temp $ hg commit -m "modified a again" 
temp $ hg log 
changeset: 2:ef40a402fdab 
tag:   tip 
user:  "xxxx" 
date:  Fri Dec 23 16:51:48 2011 -0800 
summary:  modified a again 

changeset: 1:d630dc3e2e3a 
user:  "xxxx" 
date:  Fri Dec 23 16:51:31 2011 -0800 
summary:  modified a 

changeset: 0:7c9917f24515 
user:  "xxxx" 
date:  Fri Dec 23 16:51:04 2011 -0800 
summary:  added a 

Output:

temp $ hg tag -r 1 a.txt a_1 
temp $ hg tags 
tip        3:e3157256098f 
a_1        1:d630dc3e2e3a 
a.txt        1:d630dc3e2e3a 
temp $ hg tag -r 1 all_1 
temp $ hg tags 
tip        4:a643971911d8 
all_1        1:d630dc3e2e3a 
a_1        1:d630dc3e2e3a 
a.txt        1:d630dc3e2e3a