Answers:
只需p
从您的hg log -vpr
将显示文件列表中删除即可。-p
表示显示补丁。您也可以使用模板将输出格式化为您的喜好。
hg status --change .
效果更好,并给出了文件操作前缀(A \ M \ D等)和更好的相对路径
我知道这个问题是针对单个变更集的,但是如果您想对一系列变更集的所有文件进行修改,则可以
hg status --rev 1 --rev 10 -m
hg log -r BEGIN:END --template "{files}\n"
就像两年前@ geoffrey-zheng和@ton所写!!!
hg status --rev BEGIN --rev END
是:1.比起记忆要容易得多hg log -r BEGIN:END --template "{files}\n"
;2.它不使用sed
(@Eric Lawler)或join()
(@Foxichu)在单独的行中打印文件;3.没有-m
标志,它不仅显示已修改的文件,还显示添加和删除的文件(此处也使用漂亮的标准颜色);4.有-a
和-r
标志允许不同的过滤;5.如果不希望使用状态前缀,则-n
可以使用选项来禁止显示。
hg status --change .
.
是当前版本的缩写,就像@HEAD
在Git中一样
hg status
hg status --change REV_ID
通过谷歌搜索发现了一个类似概念的问题。要显示通过一系列变更集更改的所有文件,操作非常简单:
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
将过滤列表以删除重复项-在多个修订版本中更改的文件。--template
没有这些缺点为基础的解决方案可以使用被构造join()
由@Foxichu的建议。
我知道这个问题是个老问题,我很惊讶没有人提供经过修改的代码形式OP。我只是通过运行来获得已修改/添加/删除文件的列表(未标记为哪个)hg log -v
。或者,我实际上需要hg log -v -l5
查看最近5次提交中已被修改/添加/删除的文件(包括那些我尚未推送到存储库的文件)。
如果您像大多数商店一样,可以使用票务系统来跟踪更改。如果您知道票证编号并想要查找与该票证关联的所有提交(假设您在提交消息中包括了票证编号),则可以使用:
hg log -k TICKET_NUMBER
这确实显示了与故障单关联的所有修订。但是,它不会列出文件。您可以使用上面的答案之一来获取与修订相关的文件列表。
为了简化起见,结合先前答案中的信息,您可以执行以下操作来搜索提交,包括更改的文件:
hg log -vk TICKET_NUMBER