Каталог .hgignore "_notes" по всему дереву хранилища? - PullRequest
3 голосов
/ 14 апреля 2010

Я хочу игнорировать все каталоги "_notes" в репозитории. _notes генерируется Dreamweaver и не является частью самого проекта, но эти каталоги разбросаны по всему проекту.

Каким-то образом ^ _notes $ не выполняет работу в .hgignore ... Нужно ли направлять .hgignore в каждый каталог "_notes" или это рекурсивно?

Я не совсем уверен насчет man-страниц

Ответы [ 4 ]

5 голосов
/ 14 апреля 2010

Попробуйте:

syntax: glob
_notes/*

Вероятно, я должен упомянуть, что если каталоги уже добавлены, вы не можете их игнорировать. Используйте hg забудьте, если вы используете более новую версию Mercurial, будь то случай.

1 голос
/ 14 апреля 2010

.hgignore

syntax: glob
_notes

Это не относится к каталогам, поэтому, если у вас есть какие-либо файлы с таким точным именем, они тоже будут игнорироваться.

Пример:

$ hg init subu && cd subu
$ mkdir _notes
$ mkdir a && mkdir a/_notes
$ echo 'syntax: glob' >>.hgignore
$ echo '_notes' >>.hgignore
$ touch file.txt
$ touch _notes/file.txt
$ touch a/file.txt
$ touch a/_notes/file.txt
$ hg st -A
? .hgignore
? a/file.txt
? file.txt
I _notes/file.txt
I a/_notes/file.txt
0 голосов
/ 14 апреля 2010

Это сделает работу:

syntax: regexp<br> /_notes/

Если вы хотите проверить, какие файлы игнорируются вашим хранилищем, вы можете попробовать: hg stat -i

В этом списке будут перечислены все файлы, которые успешно игнорируются hg через .hgignore, это удобно для отладки, прежде чем добавлять что-либо в хранилище.

! Ранее добавленные файлы в хранилище не будут игнорироваться!

0 голосов
/ 14 апреля 2010

Как показывает ваш комментарий, причина, по которой вы не можете заставить его работать, состоит в том, что уже находящееся в хранилище имеет приоритет над .hgignore. (Представьте себе неприятные проблемы, которые могут возникнуть, если .hgignore имеет преимущество! Запутайте регулярное выражение, и вы можете перестать отслеживать половину своего репо)

Чтобы удалить вещи из репо, вы можете использовать hg remove или hg forget (что является псевдонимом для hg remove -Af). Возможно, вы захотите использовать hg forget, так как это удалит его из хранилища, но не удалит локальную копию; hg remove также удалит (без -Af) локальную копию

...