Mercurial忽略目录的一部分

时间:2010-10-06 18:13:11

标签: regex version-control mercurial

在Windows下与Mercurial的.hgignore争夺了一段时间。

我有一个名为Upload的文件夹,目前为空。我确实想跟踪它,所以我在其中添加了一个.empty文件,工作正常。我希望这样做,以便新的开发人员进行hg克隆获取应用程序所需的上载文档。

事情是我从不希望文件夹在源代码控制本身上填充任何内容(从开发机器测试上传)。

实施例: 如果我添加Public / image.jpg则不会被跟踪。

此外,我希望跟踪子目录。因此,如果开发人员添加

上传/ users / .empty我希望跟踪此内容。

这是否可以使用正则表达式voodoo?

3 个答案:

答案 0 :(得分:4)

在mercurial中(与svn和cvs不同)添加文件会覆盖.hgignore文件,因此您可以将其放在.hgignore中:

^Uploads/.*

您添加的Upload/.empty仍将在更新时创建,因此他们将获得该目录。

让它忽略上传中的文件而不是忽略上传子目录中的文件可以通过以下方式完成:

^Uploads/[^/]*$

其中说:忽略任何以上传开头并且没有其他斜杠的内容。

实际上,您应该尽可能使用build / install / configure脚本创建Uploads,而不是使用clone / update。

答案 1 :(得分:1)

尝试放

Uploads/(?!.empty)

在存储库的 root 中的.hgignore

答案 2 :(得分:0)

尝试

^Uploads\b.*/(?!\.empty)[^/]+$

这应该匹配以Uploads开头的任何路径,其中最后一个斜杠(= filename)之后的文本除.empty之外的任何内容。