[英]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.