2011-11-15 30 views
5

Mercurial noob here. Tôi đang gặp rất nhiều rắc rối khi làm việc với các tệp tin mercurial và các tệp như xcuserdata và .ds_store và .git. Tôi đã tới giới hạn của mình rồi.Mercurial và xcuserdata, .ds_store và .git

Thiết lập hiện tại có repo trung tâm hoạt động như một người trung gian. Chúng tôi đẩy và kéo các thay đổi cho nó.

Cam kết trước đây đã được đẩy bao gồm các tệp không mong muốn (xcuserdata, git, ds_store) trước khi tệp .hgignore được tạo. Điều này đã gây ra những cơn ác mộng.

gì tôi đã cố gắng:

Tôi đã cố gắng bỏ qua những vấn đề và cho phép kết hợp xử lý nó, nhưng nó gây ra các chi nhánh trên repo trung ương mỗi đẩy do xung đột (mâu thuẫn về đẩy không được thể hiện trong thiết bị đầu cuối vì vậy tôi don 't có được một cơ hội để hợp nhất trên đẩy) và làm hỏng tập tin dự án đến mức nó gây ra các công cụ hợp nhất như filemerge và kdiff3 để treo.

Tôi đã thử tạo một tệp .hgignore cục bộ và sử dụng hg quên trên xcuserdata để ngừng theo dõi nội dung đó, nhưng nó vẫn đẩy và kéo các tệp không mong muốn đó.

Điều tôi muốn xảy ra:

Tôi muốn repo trung tâm xóa những tệp không mong muốn đó. Mỗi nhà phát triển vẫn nên có phiên bản cục bộ của những tệp đó. Các cam kết mới sẽ bỏ qua các tệp đó. Làm thế nào tôi sẽ làm điều này?

Cảm ơn

Trả lời

4

Đơn giản chỉ cần hg forget dữ liệu mà bạn muốn loại bỏ và đẩy nó vào máy chủ. Lần sau, nhóm còn lại sẽ rút từ kho lưu trữ, các tập tin cũng sẽ bị lãng quên ở phía họ.

Hãy coi chừng rằng forget chỉ hoạt động cho nhánh hiện tại, nếu bạn có các chi nhánh khác, bạn phải thực hiện trên mỗi nhánh.

Để tự động quên tất cả các file chứa trong .hgignore, bạn có thể làm

hg forget "set:hgignore()" 

Hãy chắc chắn rằng tất cả các phần của nhóm của bạn nhận thức được quyết định của bạn về những tập tin này, nếu không nó có thể họ sẽ bổ sung thêm đề tài tập tin một lần nữa trong tương lai. Giao tiếp là chìa khóa ở đây!

FYI, .hgignore không có bất kỳ tác động nào trên tệp đã trong kho lưu trữ, nó chỉ ảnh hưởng đến tệp không được thêm vào.

Nếu không, nếu bạn thực sự muốn xóa tệp hoàn toàn khỏi lịch sử, bạn có thể sử dụng phần mở rộng MQ, nhưng đây là một câu chuyện khác và IMHO phức tạp và vô dụng hơn nhiều.

+0

Cảm ơn bạn rất nhiều. Tập hợp đó: lệnh hgignore là một phao cứu sinh. T_T Tôi đã thấy rằng tệp hgignore của tôi không xóa mọi thứ. Tôi đặt nó thành \ *. Xcodeproj/xcuserdata/* nhưng nó không xóa mọi thứ từ bên trong nó. Tôi sẽ chơi với nó. –

+0

Gah, đã thử sửa đổi nhiều hơn để hgignore không thành công. Nó quản lý để xóa một số tập tin như .xcuserdatad/WorkspaceSettings.xcsettings, nhưng tôi không thể có vẻ để có được các tập tin hgignore để xóa các công cụ xcuser khác. Tôi có nên tải tệp hgignore của mình lên repo trung tâm hay gì đó không? –

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