Если я правильно понял вопрос, вы хотите игнорировать файл в tmp, но не файлы в определенных каталогах в tmp. Если это правильно, то я думаю, что вы можете сделать это, используя:
syntax: regexp
^tmp/(?!(cache|logs|sessions|test))
То есть игнорировать все, что начинается с tmp, если только следующая часть не является кешем, журналом, сессиями, тестом. Для этих файлов:
.
`-- tmp
|-- cache
| `-- afile
`-- tmpfile
вот результат hg stat
:
$ hg stat
? .hgignore
? tmp/cache/afile
Я отмечу, однако, что Cake, вероятно, говорит вам не помещать эти файлы в систему контроля версий, основываясь на том, что их наследник находится в каталоге tmp. Вы уверены, что это не то, что ваша система сборки должна создавать? Сессии, в частности, звучат довольно временно.