[英]Eclipse - CVS - Changeset - How to copy all changed files into a local system folder?
[英]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脚本中,并且这将被参数化,因此您不必记住在两个地方都更改它。
根据您的需要,有两个命令:
要获取与特定修订关联的更改,可以使用hg export
:
hg export -r 23
这将生成所有更改的差异(实际上是格式化的补丁,准备应用)
要获取受影响的所有文件的名称,可以使用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.