2012-03-27 48 views
4

我正在使用Mercurial来读取和调试一个复杂的项目,并且我的项目修改可以清楚地分为不同的文件组。例如,如果我修改了四个文件使用hg还原还原Mercurial中的一组文件

src1.cc src1.hh src2.cc src2.hh 

很显然,我可以将它们划分成两个文件组,如组SRC1包括“src1.cc src1.hh”和组SRC2包括“src2.cc src2.hh ”。

我想知道如果我可以通过一个简单的命令恢复一组文件,如'hg revert group-name-alias',而不是列出组的所有文件名,这是一个可怕的想法,如果我修改了很多文件。

任何帮助真的很感激!

回答

4

不可以。据我所知,Mercurial没有用于对文件进行分组的机制。

您可以使用别名([alias] revert-group-name = revert src2.cc src2.hh~/.hgrc)做一些欺骗,但别名只能是前缀,并且不能执行变量扩展。

如果您的文件足够简单,可以使用shell globbing(hg revert src2*)或shell变量(GROUP_NAME="src2.cc src2.hh",然后hg revert $GROUP_NAME)。

你也可以考虑写一个小的Mercurial扩展。如果你了解Python,他们不会花很长时间(我第一次花了我大约30分钟)。

4

从我能理解你的使用情况,您可以:在hg revert命令

  1. 使用模式。这意味着您可以运行运行hg revert src1*来恢复所有第一组。

    尽管最有可能的是,你的东西是在子文件夹中,并且非常感谢 ,您可以指定revert命令的父文件夹。

    所以说,你的文件是真的很喜欢:foo/src1.ccfoo/src1.hhbar/src2.ccbar/src2.hh。在这种情况下,假设您位于顶层文件夹中,则可以使用hg revert bar恢复所有 第二组。 如果您已经在bar文件夹中,则可以运行hg revert .

    您可以指定几种模式。

  2. 如果您的每个“文件组”也是 另一个工作单元(不同的错误修复或功能),则使用Mercurial queues。不过,如果所有文件都属于同一工作单元,这并不是 。

1

如果文件名符合模式,您可以使用这一模式:

hg revert src1* 

hg revert src1*.* 

如果这些文件是在特定目录,你可以这样做:

​​

如果目录超过一层深,你想要得到该目录及其所有子目录,你可以使用该版本的那个表扬:

hg revert dir\**\*