2011-09-17 34 views
7

Tôi đã đọc về các thẻ thủy ngân. Tôi có thể thấy, thông thường, chúng tôi gắn thẻ một changeset để đánh dấu một điểm phát hành và các thẻ này cũng được kiểm soát sửa đổi.Tại sao các tệp thẻ riêng biệt trong Mercurial

Nhưng tôi thực sự không thể hiểu ý tưởng của việc có tệp .hgtags. Mục đích của tập tin này là gì?

Trả lời

5

Có tệp .hgtags cho phép thay đổi tệp .hgtags để được ghi bằng cùng một định dạng được sử dụng để ghi lại các thay đổi đối với tất cả các tệp khác. Nó cũng cho phép các thẻ được chuyển giữa các kho lưu trữ trong cùng một định dạng được sử dụng để chuyển các thay đổi tập tin.

Điều này cho phép Mercurial thực hiện một hệ thống để lưu trữ các thay đổi đối với một thư mục và một giao thức chuyển một loạt các thay đổi sang thư mục và có thông tin phân nhánh và thẻ tự động được xử lý trong khi chuyển tệp.

Nó cũng cho phép người dùng xem lịch sử của các thẻ cho một dự án, bằng cách xem lịch sử của tệp .hgtags.

+2

Nhược điểm bao gồm sự nhầm lẫn xung quanh 'hg clone -r ' và yêu cầu không cần thiết để giải quyết xung đột trong tệp '.ggtags' khi hai thẻ riêng biệt được thêm vào hai nhánh riêng biệt sau đó được hợp nhất. – Jesse

+0

+1, các nguyên tắc tương tự cũng áp dụng cho '.ggignore'. –

+0

Mặc dù tôi hiểu những lập luận này, nó cũng có vẻ rất giống như "bởi vì nó là một hack expedient". Nó cũng là một sự thừa nhận rằng các thẻ không thực sự là một phần hạng nhất của Hg. –

0

Tên thẻ trong hai vị trí lưu trữ có liên quan có thể xung đột nhau.

E.G. Thẻ A có thể ở một điểm repo trên id thay đổi X và trong một repo khác cùng một thẻ có thể trỏ vào id thay đổi Y. Trong khi hợp nhất xung đột này phải được giải quyết.

Xung đột trong quá trình hợp nhất được giải quyết bằng cách kiểm tra tệp và các sửa đổi được liên kết.

Do đó, các thẻ phải được lưu trữ trong một tệp thông thường trong repo.

0

Tôi thực sự thấy hoàn toàn không có cách nào để có tệp thẻ riêng biệt. Lịch sử kho lưu trữ (bao gồm thẻ) nên được xem tốt bằng lệnh 'đăng nhập'. Việc có các tệp thẻ cũng phá vỡ một quy tắc quan trọng: một thay đổi liên quan chặt chẽ đến hệ thống phiên bản không được thay đổi kho lưu trữ theo bất kỳ cách nào.

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