Mercurial - 变更集中更改的所有文件?

时间:2010-09-24 17:15:06

标签: mercurial diff changeset

如何确定给定变更集中更改的所有文件?

在这种情况下,我不是在寻找差异,只是添加/删除/修改列表。

hg log -vprX执行差异列表,但我只想要文件。

7 个答案:

答案 0 :(得分:136)

如果您只想列出已更改的文件,那么您应该使用“status command” 以下将列出修订版REV

中文件的更改
hg status --change REV

答案 1 :(得分:15)

p中删除hg log -vpr即可显示文件列表。 -p表示显示补丁。您还可以使用template根据自己的喜好对输出进行格式化。

答案 2 :(得分:10)

我知道问题是针对单个变更集,但如果您想要针对一系列变更集修改所有文件,则可以执行

hg status --rev 1 --rev 10 -m

答案 3 :(得分:5)

当前提交的修订

hg status --change .

.是当前版本的缩写,就像Git中的@HEAD一样

当前未提交的修订版

hg status

任意承诺修订

hg status --change REV_ID

答案 4 :(得分:2)

通过谷歌搜索找到一个类似概念的问题。要显示通过变更集的范围更改的所有文件,它就像以下一样简单:

hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n" | sed -e 's/ /\n/g' | sort -d | uniq
  1. hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n"将显示每个变更集中更改或添加的每个文件的列表,从[start rev]到[end rev],每个变更集的文件都在新行上。与{file_mods}{file_adds}交换{files}以显示修改,添加或删除的所有文件。
  2. sed -e 's/ /\n/g'会拆分所有文件,以便在单独的行中显示
  3. sort将为您排序列表,以便我们可以使用uniq过滤列表
  4. uniq将过滤列表以删除在多个修订版中更改的重复文件。

答案 5 :(得分:0)

我知道这个问题是一个老问题,我很惊讶没有人提供修改后的代码形式OP。我通过运行hg log -v得到了一个修改/添加/删除文件的列表(没有标记哪个是哪个)。或者我实际需要hg log -v -l5来查看在最近5次提交中修改/添加/删除的文件(包括那些我还没有推送到repo的文件)。

答案 6 :(得分:-2)

如果您喜欢大多数商店,您可以使用票务系统跟踪更改。如果您知道故障单号并想要查找与该故障单关联的所有提交(假设您在提交消息中包含故障单号),则可以使用:

hg log -k TICKET_NUMBER

这会显示与故障单关联的所有修订。但是,它不会列出文件。您可以使用上面的答案之一,然后获取与修订版本相关联的文件列表。

为了简化这一点,结合以前答案中的信息,您可以执行以下操作来搜索提交,包括更改的文件:

hg log -vk TICKET_NUMBER