3

我们将 CakePHP 用于一个新的应用程序,并且我们使用 Mercurial 作为源代码控制工具。(Mercurial.hgignore在根目录中使用一个文件,不像(例如).cvsignore在任何目录中使用的 CVS。)

我想app/tmp/从源代码管理中排除目录的内容(因为它们一直在变化,并且可以重新生成),但我不能添加app/tmp/*.hgignore,从那时起tmpcachelogssessionstests,以及cache/models, cache/persistent, ...) 将在由 制作的新克隆中丢失hg clone,从而导致错误。

目前我在我的hgignore

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

最好有一个可以在所有项目中使用的“标准”。有人可以提出一个完整的解决方案吗?

4

3 回答 3

4

你可以加

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因为您希望默认忽略大多数文件,只跟踪显式添加的文件。

于 2009-05-22T08:55:34.090 回答
0

在我自己的结帐(来自 SVN)中,部署站点时,./tmp/ 目录需要具有一些特定权限。

我将它完全从版本控制中删除,我的部署脚本根据需要创建了目录。

于 2009-06-02T17:13:40.473 回答
0

如果我正确理解了这个问题,您想忽略 tmp 中的文件,而不是 tmp 中某些目录中的文件。如果那是正确的,那么我认为您可以使用以下方法这样做:

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

也就是说,忽略以 tmp 开头的任何内容,除非下一部分是缓存、日志、会话、测试。对于这些文件:

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

结果hg stat如下:

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

不过,我会注意到,Cake 可能会告诉您不要将这些文件放入源代码管理中,因为它们位于 tmp 目录中。您确定它们不是您的构建系统应该创建的东西吗?特别是会话听起来很短暂。

于 2009-04-11T18:29:52.560 回答