По умолчанию шаблоны являются регулярными выражениями python. Выражения ищутся в каждом компоненте пути. Так что вы, вероятно, хотите, чтобы \.pyc$
соответствовал файлам, заканчивающимся на .pyc
$ hg init test-ignore
$ cd test-ignore
$ touch foo.pyc
$ mkdir bar
$ touch bar/bar.pyc
$ echo "\.pyc$" > .hgignore
$ hg st
? .hgignore
Обратите внимание, что ".pyc $" будет игнорировать "foopyc", поскольку неэкранированная точка соответствует любому символу. Аналогично, «.pyc» будет соответствовать «foo.pyche.bar»
Если вам не нравится синтаксис регулярного выражения, вы можете переключиться на глобальные переменные.
Например, текущий .hgignore в репозитории Mercurial начинается с:
syntax: glob
*.elc
*.orig
*.rej
*~
*.mergebackup
*.o
*.so
*.pyd
*.pyc
*.swp
*.prof
\#*\#
.\#*
Все объясняется в man 5 hgignore