使用 hg purge 时排除目录

Exclude directories when using hg purge

我正在尝试在我的存储库中执行 hg purge,但我需要从该清除中排除一些目录(例如 node_modules,以及其他目录)。

基本上,我想保留(而不是删除)这些目录,以避免每次都重新下载它们。

这是关于我的构建过程,它在开始新的构建过程之前运行 hg purge,因此会删除所有被忽略的内容(在 .hgignore 中列出)。我不希望 node_modules 和其他一些目录发生这种情况。

有什么方法可以告诉 Mercurial 不要对某些目录进行清除吗?

使用-X/--exclude命令行开关(可以指定多次):

hg purge -X 'glob:node_modules/**.js'

上述模式忽略 node_modules 目录中的所有 Javascript 文件,包括子目录中的文件。使用 /** 匹配目录下的所有内容:

hg purge -X 'glob:node_modules/**'

参见 Mercurial 指南中的 File names and pattern matching chapter;那里描述的模式都可以在这里使用。

当测试你的模式时,确保你使用 --print 命令行选项到 hg purge,然后它只会 打印 哪些文件将被删除。这有助于迭代您的模式,您不必在两次尝试之间不断重新设置文件。