hgignore многострочное регулярное выражение

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

syntax: regexp
^(?!(
   app/code/local/Mage/Myreviews/|
   app/design/frontend/default/default/layout/myreviews\.xml|
   app/design/frontend/default/default/template/myreviews/|
   app/etc/modules/Mage_Myreviews\.xml|
   skin/frontend/default/default/css/myreviews/|
   skin/frontend/default/default/myreviews/|
   js/myreviews/
)).*

person grisevg    schedule 01.09.2011    source источник
comment
Хм, что-то вроде .hginclude... Я не думаю, что есть лучший способ, чем однострочное регулярное выражение.   -  person Lucero    schedule 01.09.2011
comment
@Лусеро, что такое .hginclude? Это стандартная часть mercurial или модуль?   -  person grisevg    schedule 01.09.2011
comment
это просто имя, которое я придумал для того, что ты хочешь сделать. По умолчанию Mercurial настроен на отказ — ему нужно указать, что игнорировать. Что вы хотите, так это использовать его по желанию, например. подскажите что включать. Я не знаю о таком функционале.   -  person Lucero    schedule 01.09.2011
comment
Файл .hginclude время от времени обсуждался в списках рассылки и системе отслеживания проблем, но не реализован. Только отслеживание небольшого подмножества - необычная ситуация, и на самом деле безопаснее использовать подход, описанный в ответе jk.   -  person Joel B Fant    schedule 01.09.2011


Ответы (2)


Что касается канонического ответа на ваш вопрос, поддерживаются ли многострочные регулярные выражения? Нет. Для подтверждения взгляните на функцию ignorepats в ignore.py пакета mercurial Python, она перебирает строки в файле одну за другой.

Что касается того, что вы должны делать вместо этого, ответ @jk. хорош (и glob: *, который вы придумали).

person Chris Morgan    schedule 01.09.2011

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

syntax: glob
app/*
skin/*
js/myreviews/*

а затем явным образом hg add нужные файлы.

Как указывает Джоэл, параметры hg adds --include и --exclude также полезны в этих сценариях.

упреждающая дополнительная информация: hg forget отменит отслеживание файла, не удаляя его

person jk.    schedule 01.09.2011
comment
+1: И прежде чем вы подумаете, что вам придется добавлять каждый по отдельности, hg add имеет --include и --exclude, которые принимают шаблоны. Используйте --dry-run, чтобы протестировать их (показывает, что можно добавить к этим шаблонам). - person Joel B Fant; 01.09.2011
comment
может тогда syntax: glob * ? - person grisevg; 01.09.2011
comment
конечно, вы могли бы сделать это, это означало бы игнорировать все, если я явно не скажу вам отслеживать что-то - person jk.; 01.09.2011
comment
У этого решения есть большой недостаток. Если я создам новый файл в каталоге, который я добавил ранее, он не появится в hg status. Или я ошибаюсь? - person grisevg; 01.09.2011
comment
вы можете увидеть их с помощью hg status -i, но тогда вы получите все игнорируемые файлы - person jk.; 01.09.2011
comment
Еще одним недостатком является то, что я не могу добавлять целые папки, например. hg add app/code/ с glob: *. Сначала мне нужно удалить его, добавить папки и вернуть обратно ... Мне больше нравится решение с регулярным выражением, но я не могу заставить его работать. Он отлично работает в regexbuddy (редактор регулярных выражений), но не работает в .hgignore. Спасибо за совет в любом случае. - person grisevg; 01.09.2011
comment
Я подозреваю, что лучшее, что вы получите, будет состоять в том, чтобы как можно плотнее использовать шаблоны mutliple glob или regexp, а затем добавить все, что вам действительно нужно, но соответствует шаблону. - person jk.; 01.09.2011