簡體   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