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

zhe*_*chl 4 mercurial revert

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

src1.cc src1.hh src2.cc src2.hh
Run Code Online (Sandbox Code Playgroud)

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

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

任何帮助真的很感激!

Lud*_*ant 5

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

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

    但最有可能的是,你的东西在子文件夹中,幸好你可以为revert命令指定一个父文件夹.

    所以说,你的文件是真的很喜欢:foo/src1.cc,foo/src1.hh, bar/src2.cc,bar/src2.hh.在这种情况下,hg revert bar假设您位于顶部文件夹中,则可以还原所有第二组.如果您已经在该bar文件夹中,则可以运行hg revert ..

    您可以指定多种模式.

  2. 如果每个"文件组"也是不同的工作单元(不同的错误修复或功能),请使用Mercurial队列.但是,如果所有文件属于同一工作单元,则不太理想.


Dav*_*ver 4

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

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

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

您还可以考虑编写一个小型 Mercurial 扩展。如果您了解 Python,那么它们不会花费很长时间(我的第一次大约花了 30 分钟)。