使用hg revert在Mercurial中还原一组文件

使用hg revert在Mercurial中还原一组文件,mercurial,revert,Mercurial,Revert,我正在使用Mercurial阅读和调试一个复杂的项目,我对项目的修改可以清楚地划分为不同的文件组。例如,如果我修改了四个文件 src1.cc src1.hh src2.cc src2.hh 很明显,我可以将它们分为两个文件组,例如组src1 includessrc1.cc src1.hh和组src2 includessrc2.cc src2.hh 我想知道我是否可以通过像“hg revert group name alias”这样的简单命令来还原一组文件,而不是列出该组的所有文件名,如果我修改

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

src1.cc src1.hh src2.cc src2.hh
很明显,我可以将它们分为两个文件组,例如组src1 includes
src1.cc src1.hh
和组src2 includes
src2.cc src2.hh

我想知道我是否可以通过像“hg revert group name alias”这样的简单命令来还原一组文件,而不是列出该组的所有文件名,如果我修改了许多文件,这是一个糟糕的主意


非常感谢您的帮助

没有。据我所知,Mercurial没有对文件进行分组的机制

您可以对别名进行一些欺骗(
~/.hgrc
中的
[alias]revert group name=revert src2.cc src2.hh
),但别名只能是前缀,不能执行变量扩展

如果您的文件足够简单,您可以使用shell globbing(
hg revert src2*
)或shell变量(
GROUP\u NAME=“src2.cc src2.hh”
,然后使用
hg revert$GROUP\u NAME


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

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

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

    不过,很可能你的东西在子文件夹中,谢天谢地 您可以为
    revert
    命令指定父文件夹

    因此,假设您的文件真的像:
    foo/src1.cc
    foo/src1.hh
    bar/src2.cc
    bar/src2.hh
    。在这种情况下,您可以恢复所有 第二组带有
    hg还原条
    ,假设您位于顶部文件夹中。 如果您已经在
    bar
    文件夹中,可以运行
    hg revert.

    您可以指定几个模式

  • 如果您的每个“文件组”都是 不同的工作单元(不同的bug修复或功能)。这不是 但是,如果所有文件都属于同一工作单元,那么这是非常可取的


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

    hg revert src1* 
    

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

    hg revert dir\*
    
    如果目录的深度超过一级,并且希望获取该目录及其所有子目录,则可以使用该目录的以下版本:

    hg revert dir\**\*
    
    看见
    hg revert dir\**\*