如何在Mercurial中提取变更集的所有已更改文件?

Igo*_*yev 8 svn version-control mercurial subversive changeset

直到最近,我们一直在为我们的网络工作室的所有项目使用SVN,并且在Subversive和TortoiseSVN等几个客户端中存在一个非常方便的功能,可以提取在某个修订版中已更改的所有文件.

有没有办法在Mercurial中做到这一点?我不关心它是通过GUI还是命令行完成的,拥有一组在某个变更集中已更改的文件非常方便.

PS我第一次肯定说错了.我需要的不仅仅是文件列表,将所有文件导出到其他文件夹会很棒.

Ry4*_*ase 11

在Jerome的答案的基础上,这将获得修订版4中更改的文件副本:

hg archive --type files --rev 4 -I $(hg log -r 4 --template {files} | sed 's/ / -I /g') ~/changedfiles
Run Code Online (Sandbox Code Playgroud)

这会将所有更改为修订版本4的文件放入homedir中名为changedfiles的新创建的目录中.

如果您将其更改为:

hg archive --type zip --rev 4 -I $(hg log -r 4 --template {files} | sed 's/ / -I /g') ~/changedfiles.zip
Run Code Online (Sandbox Code Playgroud)

然后他们出现在一个zip存档中.

值得注意的是,只有在文件名中没有空格时才有效.如果你犯了那个错误,那么我们就需要使用hg status --print0 -r revision -r parent-of-revision,但希望这不是必要的.

另请注意,我们示例中的修订号"4"显示两次.整个事情可以很容易地包装在一个shell脚本中,并且这将被参数化,因此您不必记住在两个地方都更改它.


Jer*_*ome 7

这将为您提供修订版4中已修改文件的列表:

hg log -r 4 --template {files}
Run Code Online (Sandbox Code Playgroud)

更新:如果您希望每行有一个文件,可以使用Hg书中描述的样式.