Tôi ghét nhìn thấy gần như mọi thư mục trong danh sách lưu trữ của tôi liệt kê mỗi tệp hai lần, một lần với dấu chấm ở phía trước và một lần không có. Tôi đã thử thêm .*
vào tệp .hgignore của mình, nhưng nó không có hiệu lực. Đây có phải là cú pháp sai, và quan trọng hơn, có phải là một ý tưởng tồi để thử điều này ngay từ đầu? Cảm ơn.Làm thế nào để làm cho mercurial bỏ qua tất cả các tập tin ẩn?
Trả lời
Bạn có câu trả lời gần đúng trong các nhận xét từ gavinb, nhưng kết quả trùng khớp là một chút. Tuy nhiên, khái niệm chính về bỏ qua sau khi khuôn mặt được cung cấp bởi RogerPage, một lần nữa trong một bình luận (những gì với tất cả mọi người thích ý kiến để trả lời?).
Hãy nhìn vào những chín file:
dir.with.dots/file.with.dots
dir.with.dots/filewithoutdots
dir.with.dots/.filestartwithdot
dirwithoutdots/file.with.dots
dirwithoutdots/filewithoutdots
dirwithoutdots/.filestartwithdot
.startwithdot/file.with.dots
.startwithdot/filewithoutdots
.startwithdot/.filestartwithdot
Nếu ở chế độ regex mặc định cho hgignore bạn làm:
\..*
Bạn bỏ qua tám chín file:
$ hg stat -i
I .hgignore
I .startwithdot/.filestartwithdot
I .startwithdot/file.with.dots
I .startwithdot/filewithoutdots
I dir.with.dots/.filestartwithdot
I dir.with.dots/file.with.dots
I dir.with.dots/filewithoutdots
I dirwithoutdots/.filestartwithdot
I dirwithoutdots/file.with.dots
rộng hơn bạn nói. Nó bỏ qua bất cứ điều gì có dấu chấm ở bất kỳ đâu trong đó.
Để bỏ qua tất cả tập tin và directores (không phải những gì bạn nói, nhưng những gì bạn dường như muốn) bắt đầu với một dấu chấm bạn sử dụng này mẫu regexp:
(^|/)\.
mà nói rằng điều trước khi đen dấu chấm phải là đầu của dòng (^
) hoặc dấu gạch chéo.
$ hg stat -i
I .hgignore
I .startwithdot/.filestartwithdot
I .startwithdot/file.with.dots
I .startwithdot/filewithoutdots
I dir.with.dots/.filestartwithdot
I dirwithoutdots/.filestartwithdot
Chỉ ghi lại các tệp hoặc thư mục bắt đầu bằng dấu chấm.
Tuy nhiên, khái niệm then chốt khác xuất hiện, đó là .hgignore không có tác dụng sau khi tệp được thêm vào. Nó sẽ ngăn chặn thêm bằng thẻ hoang dã, nhưng bạn luôn có thể ghi đè .hgignore với một rõ ràng hg add
. và một khi các tập tin đã được thêm vào, hgignore không còn được tham khảo.
Điều đó thực sự thực sự tiện dụng vì bạn có thể bỏ qua rộng rãi (ví dụ: .*\.jar
) và sau đó thêm ngoại lệ bạn muốn theo cách thủ công bằng cách sử dụng tệp hgignore của mình. Tuy nhiên, trong trường hợp này có nghĩa là bạn cần phải hg rm
các tệp bạn đã thêm vô tình và tonfa đã chỉ ra cách thực hiện điều đó (miễn là không có không gian trong tên tệp của bạn).
Trong khi kết thúc nó có vẻ giống như những gì bạn muốn trong tập tin .hgignore của bạn là:
(^|/)\._
và rằng bạn cần phải loại bỏ những người bạn đã thêm:
find . -type f -name "._*" -print0 |xargs -0 hg rm
Cách, quá kỹ lưỡng. Thanh danh! –
tôi sử dụng điều này trong của tôi .hgignore
:
syntax: regexp
# dotfiles
(?<![^/])\.
Lần đọc nào: dấu chấm không có gì khác hơn af hoặc gạch chéo.
Giải pháp của Ry4an cũng tốt, tôi đã sử dụng nó trước đó. Không chắc chắn cái nào hiệu quả hơn.
- 1. Làm thế nào để loại bỏ tất cả các dấu phụ từ một tập tin?
- 2. Hủy bỏ tất cả các tập tin đã xóa trong tiếp theo cam kết với Mercurial
- 3. Mercurial - Làm thế nào để loại bỏ tất cả các thay đổi địa phương bao gồm cả các tập tin không phiên bản?
- 4. Làm thế nào để bỏ qua các tập tin hiện có, cam kết trong git?
- 5. Làm thế nào để bạn làm cho Git bỏ qua các tập tin mà không cần sử dụng .gitignore?
- 6. Làm thế nào để làm svn bỏ qua trên một tập tin?
- 7. Làm thế nào để yêu cầu SVN bỏ qua các tệp cho tất cả các thành viên trong nhóm
- 8. Mercurial `hg clone` nhưng bỏ qua tất cả subrepos?
- 9. Diff Một thư mục đệ quy, bỏ qua tất cả các tập tin nhị phân:
- 10. Làm thế nào để làm cho WebLogic đăng nhập tất cả "console" tin nhắn vào một tập tin?
- 11. Đặt tiêu đề HTTP cho tất cả các tập lệnh PHP qua .htaccess tập tin
- 12. TFS: Làm thế nào để xem tất cả các tập tin trong nhiều changesets?
- 13. Làm thế nào để bỏ qua các tập tin bắt đầu bằng # trong git
- 14. Làm thế nào để tự động bỏ qua các tập tin trong grep
- 15. Mercurial chọn lọc các tập tin htaccess
- 16. Làm thế nào để tải tất cả các tập tin trong một thư mục với XNA?
- 17. Làm thế nào để thả tất cả các bộ sưu tập thông qua mongodb và node.js?
- 18. Làm cách nào để tạo các tệp thẻ JSP KHÔNG bỏ qua tất cả khoảng trắng?
- 19. bỏ qua tập tin nhất định trong tất cả các thư mục sử dụng một tập tin duy nhất .gitignore
- 20. Mercurial: làm cho `hg log` không hiển thị tập tin?
- 21. Làm thế nào để quên tất cả các tệp đã bị xóa bằng Mercurial
- 22. Git: làm thế nào để bỏ qua các thư mục ẩn?
- 23. Bỏ qua các tập tin và thư mục ẩn với obj-c
- 24. Mercurial: làm thế nào để hợp nhất các thay đổi cho một tập tin được đổi tên trong nhánh khác?
- 25. Làm thế nào để phù hợp với tất cả các tập tin nhưng một trong concat grunt?
- 26. Làm thế nào để bỏ qua không gian tab trong tập tin cvs eclipse so sánh?
- 27. Làm thế nào để liệt kê tất cả các tập tin văn bản (không nhị phân) trong kho git?
- 28. Mercurial - Xem tất cả các thay đổi sửa đổi dòng cụ thể trong tập tin
- 29. Làm thế nào để xóa tất cả các tập tin trong một thư mục bằng cách sử dụng hàng loạt?
- 30. Làm cách nào để bỏ qua tất cả các thư mục ngoại trừ một thư mục sử dụng .hgignore?
Cú pháp sẽ là một cái gì đó giống như '\ .. *' nhưng nó là rất đáng ngờ mà bạn mô tả có tất cả các file, với một dấu chấm và không có. Thông thường, bạn sẽ không có các tệp dấu chấm trong repo. Bạn đang theo dõi những tệp nào? ('hg manifest') – gavinb
Rất tiếc, điều này vẫn không hiệu quả. Tôi đã phóng đại một chút khi tôi nói có dấu chấm tập tin ở khắp mọi nơi, nhưng trong một số thư mục mỗi tập tin có một tập tin tương đương dấu chấm. Tôi đã chỉnh sửa .hgignore với cú pháp của bạn, đã thực hiện 'hg addremove', và thực hiện một cam kết, và tất cả chúng vẫn còn trong kho của tôi. –
Cú pháp phụ thuộc vào việc bạn đang sử dụng glob hay cú pháp lại (ví dụ: một dòng của dạng 'cú pháp: re' phía trên chỉ thị). Nhưng '. *' Là cú pháp glob đúng. Nếu các tập tin đã được cam kết, bạn sẽ phải loại bỏ chúng riêng lẻ (hoặc với 'hg rm. *'), Và addremove sẽ không làm điều này cho bạn. –