2010-08-21 26 views
32

tôi quyết định đổi tên một số danh bạ trong nhà tôi/sở thích Python gói (doc để docs, test để tests, util để utils) bởi vì, bây giờ mà tôi đã nghĩ nhiều hơn về nó, tôi nghĩ rằng tên mới phù hợp hơn. Suy nghĩ chung của tôi bây giờ là nếu các thùng chứa được đặt tên theo nội dung của chúng thì tên của chúng phải là danh từ số nhiều.Làm thế nào để đổi tên một thư mục trong Mercurial và tiếp tục theo dõi tất cả các tập tin thay đổi

Bây giờ tôi đã sẵn sàng cho hg commit tiếp theo của tôi, tôi tự hỏi làm thế nào để nói với Mercurial về những thay đổi tên thư mục. Tôi mới vào phần mềm RCS nói chung và chỉ sử dụng Mercurial trong một vài tháng. Khi tôi chạy hg status nó hiển thị tất cả các tệp trong các thư mục này bị xóa và thêm vào, vì vậy tôi sợ nếu tôi chỉ làm một hg addremove Tôi sẽ mất tất cả lịch sử thay đổi cho các tệp trong các thư mục này hoặc ít nhất là thay đổi lịch sử sẽ trở nên bị phân mảnh và không thể truy cập được. Tôi đã đi qua lệnh hg rename, nhưng các tài liệu chỉ thảo luận về việc sử dụng nó cho các tệp riêng lẻ, chứ không phải thư mục.

Sau khi đọc thêm trong 'Hướng dẫn dứt khoát' của Bryan O'Sullivan, có vẻ như rename có thể tham chiếu đến các thư mục.

Vì vậy, đây là những gì tôi đã quyết định thử:

hg rename --after doc docs 
hg rename --after test tests 
hg rename --after util utils 
hg status 
hg addremove 

bất cứ ai có thể cho tôi biết nếu điều này là phương pháp được chấp nhận và ưa thích dành cho đổi tên thư mục trong Mercurial, và nếu không, làm thế nào tôi nên làm điều đó.

Trả lời

38

Vì bạn đã đổi tên các thư mục, điều này hoàn toàn OK. (Nó sẽ giúp bạn tiết kiệm được một bước thủ công nếu bạn cho phép Mercurial đổi tên chúng cho bạn: hg rename doc docs, vv thay vì tự mình thực hiện sau đó cho phép Mercurial biết về nó).

Nếu bạn không có bất kỳ tệp nào khác để đăng ký, hg addremove là không cần thiết. Nhìn vào kết quả của hg stat và bạn chỉ cần nhìn thấy dòng bắt đầu bằng 'R' (ví doc/*, test/*util/*) và 'A' (ví docs/*, vv)

Cuối cùng, đừng quên cam kết những thay đổi .

EDIT: Quên để nói ... sử dụng hg log --follow để theo dõi các thay đổi trên đổi tên.

+0

Cảm ơn bạn Niall. Điều đó làm việc hoàn hảo. –

15

Mercurial không có khái niệm về thư mục; nó xử lý mọi thứ (tệp và thư mục) dưới dạng tệp. Ngoài ra, tôi thường không bao giờ đổi tên tệp hoặc thư mục theo cách thủ công; Tôi chỉ sử dụng

hg đổi tên cũ tên mới tên

Tôi đề nghị bạn làm điều đó quá.

Mercurial cung cấp tính năng theo dõi tên, có nghĩa là mercurial có thể theo dõi lịch sử hoàn chỉnh của tệp đã được đổi tên. Nếu bạn đổi tên theo cách thủ công, điều này là không thể.

Tuy nhiên, vì bạn đã đổi tên chúng theo cách thủ công, bạn cần sử dụng đối số --follow cùng với hg log để theo dõi thay đổi tệp thông qua lịch sử.

Cá nhân tôi chỉ cần đi với hg rename và nó phải là phương pháp ưa thích.

+0

Tôi sẽ đưa ra lời khuyên của bạn và để cho hg làm bất kỳ đổi tên nào trong tương lai. Cảm ơn lời giải thích và mẹo. –

+0

Correction: Mercurial không coi các thư mục là tập tin; nó bỏ qua chúng. Bạn không thể theo dõi một thư mục. – undefined

9

Một lý do để sử dụng - sau khi thay đổi đổi tên bằng hg là nếu bạn đang sử dụng công cụ tái cấu trúc không chỉ thay đổi tên, ví dụ: cũng sửa các tham chiếu.

+0

Đây là một vấn đề lớn, nếu bạn không sử dụng một plugin hg cho studio trực quan. –

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