2013-12-13 13 views
16

Tôi đang làm việc với một dự án tôi thừa kế từ một anh chàng Windows. Đó là dưới sự kiểm soát phiên bản Hg. Nó có một số quy ước tên tập tin không nhất quán mà tôi đang cố gắng sửa chữa vì vậy tôi đã đổi tên một tệp có tên là jquery.fullpage.js thành jquery.fullPage.js (chỉ cần viết trên "P") để tuân thủ tác giả gốc của thư viện jQuery đó.Mercurial bỏ qua một tập tin đổi tên (thay đổi trường hợp)

Tuy nhiên, Hg không phát hiện thay đổi chữ thường viết hoa dưới dạng đổi tên hoặc thậm chí là tệp đã xóa/đã tạo. Kết quả là, tôi không thể cam kết thay đổi đó và đẩy nó trực tiếp. Nó hoạt động cục bộ nhưng trên máy chủ dàn xếp từ xa mà tôi đã đẩy, nó cho lỗi 404. Rõ ràng, các tệp trên điều khiển từ xa không được đổi tên thành chữ hoa P.

Tôi biết tôi có thể khắc phục điều này bằng cách xóa tệp, cam kết, khôi phục tệp và đổi tên, cam kết lại nhưng dường như đó là cách thô lỗ sửa chữa nó.

Làm cách nào để khắc phục sự cố này?

Trả lời

20

Đây là vấn đề gấp. Hãy thử đổi tên tập tin thông qua Mercurial: hg rename jquery.fullpage.js jquery.fullPage.js.

+0

Điều này đã hiệu quả. Tôi không hài lòng với giải pháp này. Mặc dù tôi đã đọc thêm về vấn đề gấp chữ và nó có vẻ là một vấn đề với hệ thống tập tin phân biệt chữ hoa chữ thường. – dashmug

+0

Tôi đã sử dụng 'mv' nhưng nó vẫn không gây ra hệ thống tôi chạy' pull -uv' để đổi tên nó. Ồ, tôi đang cố đổi tên thư mục/thư mục được giải quyết [bằng câu trả lời khác] (https://stackoverflow.com/a/28111220/429091). – binki

0

Nếu bạn đang sử dụng OS X và bạn đang sử dụng HFS theo trường hợp nhưng không phân biệt chữ hoa chữ thường thì Hg (cũng không phải Git, như tôi đã phát hiện) sẽ nhận thay đổi. Tôi sử dụng Linux và đồng nghiệp của tôi sử dụng OS X và chúng tôi đã có một vấn đề tương tự với Git. Việc thực hiện đổi tên trung gian là một cách giải quyết hoặc sử dụng xóa trung gian như bạn đã đề xuất.

Tôi tin rằng đề xuất của Jakub về việc sử dụng hg chính nó để thực hiện việc đổi tên sẽ hiệu quả, nhưng tôi chưa thử, vì tôi chưa cài đặt hg.

+0

Thật vậy, tôi đang sử dụng OSX. Nó không phát hiện sự thay đổi. Máy chủ dàn xếp từ xa nằm trên Linux nên máy chủ dàn dựng hoạt động ổn định. – dashmug

14

Nếu bạn đang đổi tên một tệp, bạn nên sử dụng số hg rename như đã nói.

Tuy nhiên (ít nhất là trên Windows), nếu bạn đổi tên một thư mục thì bạn không thể đổi tên trực tiếp. Cách giải quyết phổ biến là sử dụng số trung gian:

hg rename Foo tmp 
hg rename tmp foo 

Cách giải quyết khác đang sử dụng xóa trung gian. Nhưng đây là không khuyến khích vì bạn sẽ mất lịch sử tệp.

+1

Tôi có cần cam kết giữa hai tên đó không? – binki

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