Mercurial中与git commit --verbose等价的命令是什么?

8
在git中,我可以使用"git commit --verbose"命令,在消息编辑器中显示差异。但是我在mercurial中没有看到任何选项。是否有一个mercurial插件可以在消息编辑器中显示差异或类似的东西?
4个回答

7
简短回答:在mercurial中没有git commit --verbose的相当之处,但可以通过一些技巧实现。
编辑文本是在mercurial源代码中硬编码的,因此无法通过插件或配置直接更改。
最好的方法是通过在hgrc中hack ui.editor设置来直接将文本添加到编辑器中。我制作了一个名为hg-commit-editor的脚本:
#!/bin/sh
echo 'HG: ------------------------ >8 ------------------------' >> $1
hg diff >> $1
editor $1
exit $?

然后在我的hgrc中将其设置为我的提交编辑器:

[ui]
editor = hg-commit-editor

该操作会将 "hg diff" 的输出附加到特定行(源代码)之后的编辑文本文件的底部,因此不会包含在提交消息中。


一开始没看到你的回答。我在我的回答中提到了https://dev59.com/e2855IYBdhLWcg3whExL上的好反馈。+1 - VonC
是的,你的答案和链接让我有了一个开始,然后我把这些信息拼凑在一起。我唯一不喜欢这种方法的地方是,如果他们开始将ui.editor用于其他目的,比如启动配置编辑器,那么这将会引起问题。 - Mu Mind
我认为你的方法没有问题,因为它是一个本地配置,并且有一个编辑器的包装。看起来很好。 - VonC
哦,ui.editor 只用作提交消息编辑器,所以没问题,但试试运行 "hg-commit-editor .hg/hgrc",注意其行为是多么奇怪。如果任何扩展或未来版本的 Mercurial 尝试在除提交消息文件以外的任何东西上使用此编辑器,那将会变得很丑陋。 - Mu Mind
这个可能可以通过新添加的 _linebelow 支持来改进,这样你就不需要在你的行前加上 HG: 了:https://www.mercurial-scm.org/repo/hg/file/853001c84114/mercurial/cmdutil.py#l170 - yegle
显示剩余2条评论

1
最简单的解决方案是下载this(使用左侧的raw链接),将其放入$PATH中,然后将HGEDITOR环境变量设置为此脚本。
在执行hg commit时,您将在单独的窗口中看到差异。
另请参见https://www.mercurial-scm.org/wiki/hgeditor @ Mu Mind的脚本仍然有效,如果您希望它的行为与git commit --verbose尽可能接近,则可能更可取。

1

虽然不能直接实现,但你可以结合以下方法:

所以:生成一个包含正确信息的文件(要推送的文件列表)作为提交消息。

我不确定这是否有助于我想要做的事情。我不希望差异信息成为提交消息,我只是想在编写提交消息时看到它。 "git commit --verbose" 显示一个编辑器,但在参考行下面包括 "git diff" 的输出。 "hg commit -l" 防止显示任何编辑器。 - Mu Mind
第一个要点也不相关。 "hg commit -l" 无法帮助。 不过我在“如何自定义提交消息文件”中找到了一些有用的东西。 - Mu Mind

0

不完全相同的结果,但最接近的迭代:

在提交之前,您可以使用hg diff查看工作区中的差异,使用alias extension,您可以为命令对“hg diff& hg commit”创建别名。


我不明白... 如果我执行“hg diff && hg commit”,那么提交消息编辑器将立即弹出,所以没有时间查看差异。 - Mu Mind

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接