1

我在Linux下使用Mercurial。我想从版本控制系统中排除所有包含该模式的文件。*.pro.user*

我试图列出所有文件:

find . -name "*.pro.user*"

这也证明了.hg文件夹中的一些结果:

...
./.hg/store/data/_test_run_multiple/_test_run_multiple.pro.user.i
./.hg/store/data/_test_non_dominated_sorting/_test_sorting.pro.user.i
./Analyzer/AlgorithmAnalyzer.pro.user
./Analyzer/AlgorithmAnalyzer.pro.user.a6874dd
...

然后我尝试将此结果通过管道传递给hg forget命令,例如:

find . -name "*.pro.user*" | hg forget

但我得到:

abort: no files specified

我的猜测是该列表需要以某种方式进行处理才能传递给hg forget.

我想问一下:

  1. 如何将 find 查询的结果传递给hg forget命令?

  2. 由于查询结果包含“私人”文件夹中的文件.hg,这是一个好主意吗?我希望 Mercurial 会忽略该请求,但我应该以某种方式删除这些结果吗?

4

2 回答 2

3

尝试以下操作:

hg forget "set:**.pro.user*"

这告诉 Mercurial 忘记任何与文件集匹配的文件**.pro.user*。由于文件集是在 Mercurial 中定义的,因此它不会进入.hg目录。通过查看以下内容,您可以使用文件集做更多事情:hg -v help filesets

开头意味着在**子目录中工作,而不仅仅是当前目录。

于 2013-10-21T16:19:54.923 回答
2

首先,您可以使用find * -name "*.pro.user*"避免查找.hg

Mercurial 的forget命令在命令行上需要它的参数。所以你需要使用xargs

find * -name "*.pro.user*" | xargs hg forget

或者,您可以要求find做这项工作:

find * -name "*.pro.user*" -exec hg forget {} \;

最后,您应该添加*.pro.user*到您的.hgignore文件中。

于 2013-10-21T16:22:39.820 回答