Hg Синтаксис регулярных выражений не работает должным образом
Вот моя структура файлов / папок:
Код /.hg
Код /.hgignore
Код /CASH/readme.txt
Код / CASH / бен /FTI/abc.dll
Я пытаюсь создать регулярное выражение в моем файле.hgignore, которое будет игнорировать все, что находится в папке CASH, за исключением всего, что находится в папке /bin/FTI.
Вот мой файл.hgignore, который не работает:
syntax: regexp
CASH/(?!bin/FTI/).*
Это приводит к игнорированию всего в папке CASH, включая файл /bin/abc.dll, который я не хочу игнорировать.
Есть идеи?
2 ответа
Это не совсем тот ответ, который вы ищете, но причина, по которой Mercurial не имеет приличного синтаксиса для "всего, кроме" в файлах.hgignore (регулярные выражения с нулевой шириной вперед не были планом), заключается в том, что hg add
Переопределение .hgignore
,
Вы можете иметь .hgignore
файл только с этим в этом:
^CASH/
а затем сделать один раз hg add CASH/bin/FTI/**
и вы будете отслеживать все будущие изменения для всех файлов, которые уже существуют в этом каталоге.
Конечно, если в CASH/bin/FTI появится новый двоичный файл, вам нужно будет не забыть добавить его, но для внесения изменений в уже добавленные файлы не потребуется никаких дополнительных действий. Если двоичные файлы с новыми именами не являются обычным явлением, это более распространенная настройка.
Шар может легче в этом случае. Если вы используете регулярное выражение, как насчет:
syntax: regexp
CASH/(?!bin)
CASH/bin/(?!FTI)