2010-12-29 9 views
9

Nếu tôi thêm một tệp mới vào thư mục gốc của dự án, nó xuất hiện với trạng thái ? trong hg st và được thêm với hg add. Tuy nhiên, nếu tôi thêm một tệp mới vào thư mục con, nó sẽ không xuất hiện ở dạng hg st và chỉ được thêm nếu tôi thêm tệp một cách rõ ràng (ngay cả khi tôi thêm thư mục chứa của tệp).Làm thế nào để có được sự thương xót để thông báo các tập tin được thêm vào các thư mục con? (hg st, hg add)

Làm cách nào để tôi nhận được thông báo về các tệp trong thư mục con theo cách tương tự như cách lật đổ thông báo cho các tệp phụ?

Cảm ơn

+0

Điều này có xảy ra với bất kỳ thư mục con nào (tức là độc lập với tên của nó) hay chỉ dành cho những thư mục cụ thể? –

+0

Xin vui lòng gửi một ví dụ cụ thể minh họa vấn đề, bắt đầu từ một 'hg init' như ví dụ trong câu trả lời của tôi/đoán. –

+0

Trạng thái 'hg --all' có cung cấp cho bạn danh sách cho tệp không? – Matt

Trả lời

14

Vâng, đồng bằng hg add mà không cần bất kỳ đối số thêm cho biết thêm tập tin trong thư mục con là tốt, nó về cơ bản cho biết thêm tất cả các file với tình trạng không rõ để được theo dõi.

Tuy nhiên, nếu bạn chỉ định một mặt nạ đơn giản, nó chỉ hoạt động trên thư mục làm việc hiện tại của bạn (ví dụ: thư mục làm việc của lệnh hg, không phải thư mục làm việc được liên kết với kho lưu trữ), vì vậy nếu bạn hiện đang ở thư mục con, nó sẽ thêm các tệp đó, nếu bạn đang ở trong thư mục gốc, nó sẽ thêm các tệp đó vào thay thế.

Nói cách khác, điều này:

hg add test* 

Chỉ hoạt động trên các tập tin trong thư mục hiện tại bạn đang nằm.

Bạn có thể ghi đè lên hành vi đó bằng cách xác định một mặt nạ mà nói với hg để hoạt động trên thư mục con:

hg add **/test* 

này nói "thêm tất cả các file phù hợp với 'thử *' trong thư mục hiện và tất cả phụ thư mục.

Nếu bạn loại bỏ một trong những asterixes, bạn chỉ hoạt động trên các thư mục con của thư mục làm việc hiện tại.

Nó sẽ giúp đỡ nếu bạn đăng những gì lệnh cụ thể mà bạn thực hiện, và đầu ra, nếu có, và đầu ra của hg st trước và sau.

+1

Tôi không áp dụng bất kỳ mặt nạ nào. Tôi chỉ cần thêm một tập tin trong một subdir và làm một 'hg st', và thấy không có đầu ra (thậm chí không phải là một tình trạng'? 'Không rõ cho tập tin). Nếu tôi làm điều tương tự trong thư mục gốc, tôi sẽ thấy tệp có trạng thái không xác định. Thật đáng giá khi đề cập đến subdir không bị bỏ qua trong .hgignore –

+0

Tên thư mục là gì, tên của tệp là gì và bạn có thể đăng tệp .hgignore của mình, chỉ trong trường hợp không? –

+0

Ồ, và kiểm tra câu trả lời của @Mark Tolonen ở đây, có thể đó là vấn đề của bạn. –

3

Bạn có hg init trong thư mục con không? Nếu có thì đừng. Dưới đây minh họa vấn đề này:

C:\>hg init project 
C:\>cd project 
C:\project>hg init sub 
C:\project>echo >file1 
C:\project>echo >sub\file2 
C:\project>hg st 
? file1 

Xóa thư mục .hg của thư mục con để sửa chữa nó:

C:\project>rd /s/q sub\.hg 
C:\project>hg st 
? file1 
? sub\file2 

Không giống như Subversion, Mercurial chỉ sử dụng một thư mục .hg tại thư mục gốc của một dự án.

+0

Cảm ơn Mark nhưng không, tôi không 'hg init' bất kỳ thư mục con nào, và không có thư mục' .hg' nào khác ngoài thư mục gốc của tôi. Bạn có ý tưởng nào khác không? –

+0

Ý tưởng duy nhất là đăng một ví dụ hoàn chỉnh về các lệnh dẫn đến vấn đề. Bạn có một .hgignore ở tất cả? Có thể một cái gì đó vô tình phù hợp. Điều gì sẽ xảy ra nếu, trong một thư mục hoàn toàn mới, bạn 'hg init', tạo một tệp, tạo một subdir, tạo một tệp trong subdir và' hg status'? Điều đó sẽ hiển thị cả hai tệp. –