Regex отрицательный взгляд в файле hgignore - PullRequest
3 голосов
/ 25 марта 2010

Я ищу способ изменить мой файл .hgignore, чтобы игнорировать все файлы "Properties / AssemblyInfo.cs", за исключением файлов в подпапках "Test /" или "Tests /".

Я пытался использовать отрицательное выражение поиска (?<!Test)/Properties/AssemblyInfo\.cs$, но я не нашел способа "игнорировать" в обеих папках "Test /" и "Tests /".

Ответы [ 3 ]

2 голосов
/ 25 марта 2010

Python не поддерживает внешний вид переменной длины.

Но \b(?<!Test)(?<!Tests)/Properties/AssemblyInfo\.cs$ должно работать.

2 голосов
/ 25 марта 2010

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

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

Не случайно в вашем файле .hgignore есть .*, а затем hg add файлы, которые вы хотите отслеживать.

В этом случае, более традиционный ртутный способ сделать это - файл .hgignore, подобный следующему:

/Properties/AssemblyInfo\.cs

с последующим:

$ hg add Test/Properties/AssemblyInfo.cs
$ hg add Tests/Properties/AssemblyInfo.cs

Если у вас есть сотни тестов и тестов, вы можете добавить их с помощью find, но если вы создаете новые каждый день, регулярное выражение определенно является подходящим вариантом.

0 голосов
/ 25 марта 2010

Обычно вы просто делаете Tests?, но, поскольку в зависимости от механизма регулярных выражений, динамические запросы не разрешены, вы можете просто использовать две ветви:

(?<!Test|Tests)/Properties/AssemblyInfo\.cs$

...