.hgignore для приложения CakePHP? - PullRequest
3 голосов
/ 10 апреля 2009

Мы используем CakePHP для нового приложения и используем Mercurial в качестве инструмента управления исходным кодом. (Mercurial использует один .hgignore файл в корневом каталоге, в отличие от (например) CVS, который использует .cvsignore в любом каталоге.)

Я бы хотел исключить содержимое каталога app/tmp/ из системы контроля версий (поскольку они все время меняются и могут быть восстановлены), но я не могу добавить app/tmp/* к .hgignore, поскольку тогда стандартные каталоги в tmp (cache, logs, sessions, tests, а также cache/models, cache/persistent, ...) будут отсутствовать в новых клонах, созданных hg clone , что приводит к ошибкам.

В настоящее время у меня в hgignore:

app/tmp/logs/*.log
app/tmp/cache/persistent/cake_*
app/tmp/cache/models/cake_*

Было бы хорошо иметь «стандартный», который можно было бы использовать во всех проектах. Может кто-нибудь предложить полное решение?

Ответы [ 3 ]

4 голосов
/ 22 мая 2009

Вы можете добавить

syntax: glob
app/tmp/**

в ваш файл .hgignore, и Mercurial с этого момента будет игнорировать все файлы в app/tmp/ с исключением файлов, отслеживаемых Mercurial. См. hg help patterns для получения дополнительной информации о шаблонах имен файлов.

Так что, если вы делаете

% touch app/tmp/cache/.empty
% touch app/tmp/logs/.empty
% hg add app/tmp/cache/.empty
% hg add app/tmp/logs/.empty

и создайте клон, тогда каталоги app/tmp/cache и app/tmp/logs будут созданы и новые файлы в этих каталогах будут игнорироваться. Я думаю, это то, что вы хотите?

Это также полезно для отслеживания чего-то вроде $HOME, так как вы хотите игнорировать большинство файлов по умолчанию и отслеживать только явно добавленные файлы.

0 голосов
/ 02 июня 2009

В моих собственных проверках (из SVN), когда сайт был развернут, каталог ./tmp/ должен был иметь некоторые определенные разрешения.

Я полностью удалил его из-под контроля версий, и мой сценарий развертывания создал необходимые каталоги.

0 голосов
/ 11 апреля 2009

Если я правильно понял вопрос, вы хотите игнорировать файл в tmp, но не файлы в определенных каталогах в tmp. Если это правильно, то я думаю, что вы можете сделать это, используя:

syntax: regexp
^tmp/(?!(cache|logs|sessions|test))

То есть игнорировать все, что начинается с tmp, если только следующая часть не является кешем, журналом, сессиями, тестом. Для этих файлов:

.
`-- tmp
    |-- cache
    |   `-- afile
    `-- tmpfile

вот результат hg stat:

$ hg stat
? .hgignore
? tmp/cache/afile

Я отмечу, однако, что Cake, вероятно, говорит вам не помещать эти файлы в систему контроля версий, основываясь на том, что их наследник находится в каталоге tmp. Вы уверены, что это не то, что ваша система сборки должна создавать? Сессии, в частности, звучат довольно временно.

...