简体   繁体   中英

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

Until recently we have been using SVN for all projects of our web studio, and there is a very convenient feature present in several clients like Subversive and TortoiseSVN that can extract all files that have been changed in a certain revision.

Is there a way to do it in Mercurial? I don't care if it's done via a GUI or a command line, it's just very convenient to have a set of files that have been changed in a certain changeset.

PS I must have put it wrong the first time. I need more than just a list of files, it would be great to have all the files exported to some other folder.

Building on Jerome's answer this will get you the copies of the files that changed in revision 4:

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

That puts all the files that changed into revision four into a newly created directory named changedfiles in your homedir.

If you change it to:

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

then they show up in a zip archive.

It's worth noting that that only works if you have no spaces in filenames. If you made that blunder then we'll need to use hg status --print0 -r revision -r parent-of-revision instead, but hopefully that's not necessary.

Note also that the revision number, '4' in our example, shows up twice. The whole thing could very easily be wrapped in a shell script, and that would be parameterized so you don't have to remember to change it in both places.

This gives you the list of modified files in revision 4:

hg log -r 4 --template {files}

Update: If you'd like to have one file per line, you may use the style described in Hg book .

Depending on your ned, there are two command:

  1. To get the changes associated with a particular revision, you can use hg export :

     hg export -r 23 

This will generate a diff of all the changes (actually a formatted patch, ready to be applied)

  1. To get the name all the files that were affected, you can use hg log :

     hg log -r 23 -v 

This will print the meta-info for the revision, along with the names of the files that were affected.

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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