#regex #mercurial #hgignore
#регулярное выражение #mercurial #hgignore
Вопрос:
Вот моя структура файлов / папок:
Code/.hg
Code/.hgignore
Code/CASH/readme.txt
Code/CASH/bin/FTI/abc.dll
Я пытаюсь создать регулярное выражение в моем файле .hgignore, которое будет игнорировать все, что находится ниже папки CASH, за исключением всего, что находится в папке /bin / FTI.
Вот мой файл .hgignore, который не работает:
syntax: regexp
CASH/(?!bin/FTI/).*
В результате игнорируется все, что находится в папке CASH, включая /bin/abc.dll файл, который я бы не хотел игнорировать.
Есть идеи?
Ответ №1:
Это не совсем тот ответ, который вы ищете, но причина, по которой Mercurial не имеет приличного синтаксиса для «всего, кроме» в файлах .hgignore (регулярные выражения с нулевой шириной не были запланированы), заключается в том, что hg add
переопределяет .hgignore
.
У вас может быть .hgignore
файл, содержащий только это:
^CASH/
а затем выполните однократное hg add CASH/bin/FTI/**
и вы будете отслеживать все будущие изменения во всех файлах, которые уже существуют в этом каталоге.
Конечно, если новый двоичный файл отображается в CASH / bin / FTI, вам нужно не забыть добавить его, но изменения в уже добавленных файлах не потребуют каких-либо дополнительных действий. Если двоичные файлы с новыми именами не являются обычным явлением, это более распространенная настройка.
Ответ №2:
в этом случае глобус может быть проще. Если используется регулярное выражение, как насчет:
syntax: regexp
CASH/(?!bin)
CASH/bin/(?!FTI)