102

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

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

hg log -vprX做了一个差异列表,但我只想要文件。

4

7 回答 7

153

如果您只想列出已更改的文件,则应使用“状态命令”以下将列出修订版 REV 中文件的更改

hg status --change REV
于 2010-09-24T17:27:16.423 回答
16

只需p从您的hg log -vpr将显示文件列表中删除。-p表示显示补丁。您还可以使用模板根据您的喜好格式化输出。

于 2010-09-24T18:44:23.553 回答
16

当前提交的修订

hg status --change .

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

当前未提交的修订

hg status

任意提交的修订

hg status --change REV_ID
于 2018-05-15T17:27:34.610 回答
13

我知道问题是针对单个变更集的,但是如果您想为一系列变更集修改所有文件,您可以这样做

hg status --rev 1 --rev 10 -m
于 2012-10-31T20:15:08.750 回答
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将过滤列表以删除重复文件——在多个修订版中更改的文件。
于 2014-11-01T20:16:23.497 回答
1

我知道这个问题是一个老问题,我很惊讶没有人提供修改过的代码形式 OP。我通过运行hg log -v. 或者我实际需要hg log -v -l5查看最近 5 次提交中已修改/添加/删除的文件(包括我尚未推送到 repo 的文件)。

于 2016-12-21T14:39:08.007 回答
-2

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

hg log -k TICKET_NUMBER

这确实显示了与工单关联的所有修订。但是,它没有列出文件。您可以使用上面的答案之一来获取与修订关联的文件列表。

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

hg log -vk TICKET_NUMBER
于 2015-07-21T14:33:14.480 回答