如何确定给定变更集中发生更改的所有文件?
在这种情况下,我不是在寻找差异,只是添加/删除/修改的列表。
hg log -vprX
做了一个差异列表,但我只想要文件。
如果您只想列出已更改的文件,则应使用“状态命令”以下将列出修订版 REV 中文件的更改
hg status --change REV
只需p
从您的hg log -vpr
将显示文件列表中删除。-p
表示显示补丁。您还可以使用模板根据您的喜好格式化输出。
hg status --change .
.
是当前版本的简写,就像@HEAD
在 Git 中一样
hg status
hg status --change REV_ID
我知道问题是针对单个变更集的,但是如果您想为一系列变更集修改所有文件,您可以这样做
hg status --rev 1 --rev 10 -m
通过谷歌搜索找到了这个问题以获得类似的概念。要显示通过一系列变更集更改的所有文件,很简单:
hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n" | sed -e 's/ /\n/g' | sort -d | uniq
hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n"
将向您显示每个变更集中更改或添加的每个文件的列表,从 [start rev] 到 [end rev],每个变更集的文件都在一个新行上。交换{file_mods}{file_adds}
以{files}
显示所有修改、添加或删除的文件。sed -e 's/ /\n/g'
将拆分所有文件以显示在单独的行上,并且sort
会,呃,为你排序列表,这样我们就可以用 uniq 过滤列表uniq
将过滤列表以删除重复文件——在多个修订版中更改的文件。我知道这个问题是一个老问题,我很惊讶没有人提供修改过的代码形式 OP。我通过运行hg log -v
. 或者我实际需要hg log -v -l5
查看最近 5 次提交中已修改/添加/删除的文件(包括我尚未推送到 repo 的文件)。
如果您像大多数商店一样,可以使用票务系统来跟踪更改。如果您知道票号并且想要查找与该票关联的所有提交(假设您在提交消息中包含票号),您可以使用:
hg log -k TICKET_NUMBER
这确实显示了与工单关联的所有修订。但是,它没有列出文件。您可以使用上面的答案之一来获取与修订关联的文件列表。
不过,为了更简单,结合先前答案中的信息,您可以执行以下操作来搜索提交,包括更改的文件:
hg log -vk TICKET_NUMBER