繁体   English   中英

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

[英]How can I extract all changed files of a changeset in Mercurial?

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

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

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

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

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

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

如果您将其更改为:

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

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

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

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

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

hg log -r 4 --template {files}

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

根据您的需要,有两个命令:

  1. 要获取与特定修订关联的更改,可以使用hg export

     hg export -r 23 

这将生成所有更改的差异(实际上是格式化的补丁,准备应用)

  1. 要获取受影响的所有文件的名称,可以使用hg log

     hg log -r 23 -v 

这将打印修订的元信息以及受影响的文件的名称。

此命令输出指定修订中所有已更改文件的名称:

hg export revision_num | grep ^diff | cut -f 6 -d ' '

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM