2010-03-24 30 views
23

Tôi mới dùng Mercurial và sau khi dọn dẹp thư mục hình ảnh trong dự án của mình, tôi có rất nhiều tệp hiển thị! trong 'trạng thái hg'. Tôi có thể gõ một 'hg quên' cho mỗi, nhưng phải có một cách dễ dàng hơn.Làm thế nào để quên tất cả các tệp đã bị xóa bằng Mercurial

Vậy làm thế nào tôi có thể nói với mercurial quên tất cả các tệp đã xóa (status =!) Trong một thư mục?

+0

trùng lặp: http://stackoverflow.com/questions/2412239/how-to-do-mercurials-hg-remove-for- all-missing-files – Cullub

+0

Không chính xác là một bản sao, mặc dù giải quyết một trong hai yêu cầu các tệp danh sách không hiển thị trong 'ls'. Câu hỏi đó hỏi làm thế nào để đánh dấu các tập tin đã xóa như hg loại bỏ. Điều này là làm thế nào để * un * đánh dấu tất cả các file bị xóa hg. –

Trả lời

27

Nếu bạn cũng đang okay với việc thêm bất kỳ tập tin tồn tại và không được bỏ qua thì:

hg addremove 

sẽ một cách phổ biến để làm điều đó.

+2

Đúng, thêm các tập tin không được theo dõi và đánh dấu các tệp bị thiếu như đã xóa trong một lệnh viết tắt. +1 – VonC

+0

chắc chắn câu trả lời chính xác ở đây – Jason

+0

Điều này cũng hoạt động cho quá trình truyền tải thư mục đệ quy, trong đó-khi quên -I phải được thực hiện trong thư mục của các tệp cần xóa. –

3

Bạn có thể thử:

hg forget -I '*' 

để bao gồm tất cả các file trong quên lệnh của bạn.

+3

hãy cẩn thận, điều đó sẽ không bắt các tệp bắt đầu bằng dấu chấm trong thư mục hiện tại. –

+1

không làm gì cho tôi: "hủy bỏ: không có tệp nào được chỉ định" – stian

+0

Bạn có cần \ * \ * thay vì * để xem ngoài thư mục gốc không? ('hg help patterns') –

9

Với fileset (Mercurial 1.9):

hg forget "set:deleted()" 

Nói chung, trên Linux hoặc Mac:

hg status -dn | while read file ; do hg forget "$file" ; done 

Hoặc, nếu shell của bạn cho phép nó, nếu không có quá nhiều tác phẩm, và nếu tên tập tin không chứa khoảng trắng hoặc ký tự đặc biệt, sau đó:

hg forget $(hg st -dn) 

tôi

1

Bằng việc sử dụng cờ -d cho tình trạng, hiển thị các file bị mất:

for file in $(hg status -d | cut -d " " -f 2); do echo hg forget $file; done

Run này trong thư mục gốc của repo của bạn, và nếu bạn hài lòng với kết quả, loại bỏ các echo

Điều này có phần thưởng trên câu trả lời được chấp nhận là không phải thực hiện bất kỳ công việc bổ sung nào, ví dụ: thêm một loạt các tệp không được theo dõi.

+0

Tôi nhận được 'không có tệp hoặc thư mục nào' cho mỗi tệp, có thể chúng bị thiếu. – Grzenio

0

ngắn hơn thay vì

for file in $(hg status -d | cut -d " " -f 2); do echo hg forget $file; done 

này

hg status -d | cut -d " " -f 2 | xargs echo hg forget # test case 
hg status -d | cut -d " " -f 2 | xargs hg forget # real work 
Các vấn đề liên quan