使用hg revert恢复Mercurial中的一组文件

时间:2012-03-27 03:24:24

标签: mercurial revert

我正在使用Mercurial来读取和调试复杂项目,我对项目的修改可以分为不同的文件组。例如,如果我修改了四个文件

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

显然我可以把它们分成两个文件组,例如组src1包括'src1.cc src1.hh',组src2包括'src2.cc src2.hh'。

我想知道我是否可以通过像'hg revert group-name-alias'之类的简单命令来恢复一组文件,而不是列出该组的所有文件名,如果我修改了很多文件,这是一个很糟糕的主意。

任何帮助真的很感激!

3 个答案:

答案 0 :(得分:5)

根据我对您的用例的理解,您可以:

  1. hg revert命令中使用模式。这意味着你可以 运行hg revert src1*以还原所有第一组。

    最有可能的是,你的东西是在子文件夹中,谢天谢地 您可以为revert命令指定父文件夹。

    所以说你的文件非常像:foo/src1.ccfoo/src1.hhbar/src2.ccbar/src2.hh。在这种情况下,您可以还原所有 第二组hg revert bar,假设您在顶部文件夹中。 如果您已经在bar文件夹中,则可以运行hg revert .

    您可以指定多种模式。

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

答案 1 :(得分: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分钟)。

答案 2 :(得分:1)

如果文件名符合模式,则可以使用该模式:

hg revert src1* 

hg revert src1*.*

如果这些文件位于特定目录中,您可以执行以下操作:

hg revert dir\*

如果目录深度超过一级并且您想要获取该目录及其所有子目录,则可以使用此版本的推荐:

hg revert dir\**\*