如何在 mercurial TortoiseHg 中从命令行启动工作副本的视觉差异和文件的最后提交

Posted

技术标签:

【中文标题】如何在 mercurial TortoiseHg 中从命令行启动工作副本的视觉差异和文件的最后提交【英文标题】:How to start visual diff of working copy and last commit of a file from command line in mercurial TortoiseHg 【发布时间】:2013-07-25 21:39:49 【问题描述】:

假设我已经知道一个文件已在 mercurial repo 中被修改, 有什么方法可以在命令行中启动差异工具来显示工作副本和提交之间文件的视觉差异

小背景: 我正在尝试为 QT 添加一个 External Tool,这将帮助我在单击按钮时在差异工具中查看当前打开文件的工作副本更改,而无需在 TortoiseHg 中打开 repo,等待它加载(大仓库,很多时间),然后右键单击修改后的文件以选择 查看视觉差异

对于那些不熟悉设置的人, 我有: hg repo 和修改文件的完整路径, 我需要: 一个 linux 命令以在差异工具中打开文件的 工作副本最后一次提交 之间的差异

我的设置: Linux、QT、TortoiseHg、Sourcegear DiffMerge

这可能吗?

【问题讨论】:

阅读@yhw42实践部分hgbook.red-bean.com/read/… 【参考方案1】:

我假设您能够编辑其中一个配置文件以启用扩展,例如 .hgrc 文件。如果是这样,那么as described here 或here 可以添加以下内容(并确保 diffmerge 的路径正确):

[ui]
merge = diffmerge

[extensions]
hgext.extdiff =

[extdiff]
cmd.diffmerge = /usr/bin/diffmerge

[merge-tools]
diffmerge.executable = /usr/bin/diffmerge
diffmerge.args = -merge -result=$output -t1="Local Version" -t2=$output -t3="Other Version" -caption=$output $local $base $other
diffmerge.binary = False
diffmerge.symlinks = False
diffmerge.gui = True

由于您只要求将其添加到文件之间的差异而不是用于合并,因此您可能只需要以下部分(不包括合并功能):

[extensions]
hgext.extdiff =

[extdiff]
cmd.diffmerge = /usr/bin/diffmerge

【讨论】:

您忘记在 CLI 中写入最终结果:hg diffmerge FILENAME 什么对我有用:我按照 yhw42 的说明将所有内容添加到我的 .hgrc 文件中。然后, 1. 要查看工作目录差异(所有更改的文件),我使用了 hg diffmerge 命令。 2. 要查看单个文件的差异,我使用了 hg diffmerge ,就像@lazy Badger 建议的那样。 @user2608651 - 工作目录中所有更改的文件都将是hg status 更好 @LazyBadger, hg status 给了我更改文件的名称。我想在可视化差异工具中查看所有更改的文件,打开一个文件以查看其更改并在必要时进行修改。 hg diffmerge 达到目的。

以上是关于如何在 mercurial TortoiseHg 中从命令行启动工作副本的视觉差异和文件的最后提交的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mercurial TortoiseHg 中从命令行启动工作副本的视觉差异和文件的最后提交

如何使用TortoiseHg工作台连接到存储库?

是否可以/建议安装TortoiseHg如果已安装(较新的)mercurial?

TortoiseHg 3.6.3打破了mercurial keyring?

想在 TortoiseHG/Mercurial 中为我的 .hgignore 文件创建一些默认值

当我进行初始提交时,出现错误 255。 Mercurial TortoiseHg