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)
Другие вопросы по тегам