2011-10-17 32 views
5

Tôi có một kho lưu trữ Mercurial với một vài subrepos. Có khả năng chỉ định nghĩa một tệp chung .hgignore-File (ví dụ: bỏ qua các tệp đối tượng) trong cả kho lưu trữ chính và tùy chọn một chuyên ngành trong các kho con?Thực hiện .hgignore trong một kho lưu trữ Mercurial có sẵn cho tất cả các subrepos?

Không có đủ thông tin trong sách hướng dẫn. Chỉ định tệp .hgignore với

[ui] 
ignore = .hgignore 

để .hgrc trong thư mục chính của tôi cũng không hoạt động.

Bất kỳ ý tưởng nào?

Trả lời

3

Một tệp .hgignore trong mỗi phụ trang sẽ đóng vai trò là chuyên ngành cho phụ đề đó. Sau đó, bạn có thể sử dụng repo chính của .hgignore như một trong những chính bằng cách bao gồm này trong hgrc tập tin mỗi subrepo:

[ui] 
ignore.main = \absolute\path\to\mainrepo\.hgignore 

Lý do tại sao làm ignore = .hgignore không làm việc cho bạn trong toàn cầu .hgrc (và sẽ không trong repo của bạn hgrc) là chỉ đơn giản là .hgignore là một đường dẫn tệp tương đối và độ phân giải của nó đến đường dẫn tuyệt đối phụ thuộc vào thư mục làm việc hiện tại được sử dụng khi gọi hg. Ví dụ:

  • Nếu bạn đang ở \repos\main\ và gọi hg st, nó sẽ tìm kiếm \repos\main\.hgignore. Điều tương tự nếu bạn gọi hg st -R nested, bởi vì thư mục làm việc hiện tại vẫn như cũ.
  • Nhưng nếu bạn đang ở \repos\main\nested\ và sau đó được gọi hg st, cấu hình giờ đây sẽ xem \repos\main\nested\.hgignore.

Nếu bạn muốn chỉ định một toàn cầu .hgignore đó là trong thư mục chính của bạn, bạn sẽ cần phải xác định nó với một con đường phi tương đối (hoặc ít nhất là ít hơn nhiều so):

[ui] 
ignore = ~\.hgignore 
+0

tôi m không chắc về viên đạn đầu tiên của bạn ở đó. Nếu bạn gọi 'hg st -R nested' thì' \ repos \ main \ nested \ .hgignore' sẽ được sử dụng, vì đó là tệp '.hgignore' trong thư mục làm việc của repo' nested' - đó có thể là những gì bạn có nghĩa là, nhưng nó không đọc theo cách đó. – icabod

+0

@icabod: Tôi không có máy * nix để thử nghiệm, nhưng đó là cách Windows hoạt động. Nếu tôi có các tệp 'extra.hgignore' khác trong' main' và 'nested' và đặt' ignore = extra.hgignore' trong 'nested \ .hg \ hgrc', làm' hg st' và 'hg st -R nested' cả hai kéo từ 'main \ extra.hgignore'. Chỉ khi tôi 'cd' thành' nested', nó sẽ thay thế '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' (Đối với thử nghiệm của tôi, tôi đã sử dụng 4 tệp trong cả hai 'main' và' nested', với 4 phần mở rộng khác nhau được phân phối trong số các tệp bị bỏ qua.) –

+0

Ah, tôi nghĩ rằng tôi đã bỏ lỡ một phần câu trả lời của bạn khi tôi thử nó. Lỗi của tôi :) – icabod

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