生成在hg版本之间更改的文件的列表

Pau*_*han 117 version-control mercurial

我想生成一个列表,列出Mercurial中给定目录中两个修订版之间的文件.

特别是,我没有兴趣在什么改变,但哪些文件在该目录中改变.

例如,假设在then和之间otherthen,只有2个文件发生了变化:

>hg hypothetical-command -r then:otherthen
foo.baz
bar.baz
>
Run Code Online (Sandbox Code Playgroud)

什么是假设命令?我已经尝试了差异和日志,但我看不出如何说服他们这样做:要么我得到补丁(差异),要么得到整个回购(日志).

ale*_*rus 165

hg status --rev x:y
Run Code Online (Sandbox Code Playgroud)

在哪里xy所需的修订号(或标签或分支名称).

如果您在Windows中使用终端添加hg status --rev x:y> your-file.txt将列表保存到文件.

  • 要查看最新版本中的更改:`hg status --rev.^` (14认同)
  • 要获得文件名列表(并且没有指示更改类型的前缀字符),请附加`-n`,即`hg status --rev x:y -n` (8认同)
  • 要仅查看当前目录中的更改:`hg status --rev x:y .` (3认同)

mar*_*112 14

状态就是你所需要的.

但是,根据"两个版本之间"的含义,您可能还会考虑使用" x :: y "(DAG - 定向非循环图)范围.

给定并行变更集,

1--2---4 \---3

hg status --rev 1:4 将返回(1,2,3,4),即根据本地数值转速在端点之间和包括端点之间的任何内容.这可能(并且很可能会)在其他 - 尽管是相关的 - 存储库中返回不同的结果!

hg status --rev 1::4将返回(1,2,4),即在端点,并且其所有的变更后代的"1"和祖先的"4".

后一种情况x :: y通常在实际应用中更有用.这是你通过TortoiseHg\Visual Diff得到的.


> hg help revsets:

"x :: y"DAG范围,表示作为x的后代和y的祖先的所有变更集,包括x和y本身.如果省略第一个端点,这相当于"祖先(y)",如果省略第二个端点则相当于"后代(x)".