1

我尝试为这个问题编写一个简单的 difftool -验证 Git 提交是否只移动行- 它可以工作......我猜很好,但有一个问题。

当要求它在两次提交之间进行差异时,如下所示:

git difftool -t OnlyMovedLines HEAD~1 HEAD

然后对于每个修改过的文件,使用来自每个提交的快照创建两个临时文件,然后调用该工具。

然而,这意味着该工具无法报告哪个文件实际上正在被比较,因为文件名可能是这样的:

C:\Users\lasse\AppData\Local\Temp/Ol8Kc9_a.txt
C:\Users\lasse\AppData\Local\Temp/WtSX78_a.txt

所以我的问题是,有什么方法可以让我在 .gitconfig 文件中添加更多配置,或者是否有诸如环境变量之类的东西,可以用来告诉工具实际比较的是哪个文件?

这个特定工具的 .gitconfig 文件如下所示:

[difftool "OnlyMovedLines"]
    cmd = 'D:\\path\\to\\netcoreapp3.1\\OnlyLinesMovedDiffTool.exe' $LOCAL $REMOTE
4

2 回答 2

1

答案很简单。

.gitconfig 配置缺少我的工具的第三个参数:

[difftool "OnlyMovedLines"]
    cmd = 'D:\\path\\to\\netcoreapp3.1\\OnlyLinesMovedDiffTool.exe' $LOCAL $REMOTE $BASE
                                                                                   ^^^^^

添加之后,正在比较的文件的名称被传递给我的程序。

于 2020-07-19T09:49:41.297 回答
1

关于文件名的一个注释:

  • 如果您git difftool单独运行:每次调用该工具之前都会在终端上显示原始文件名(如果您不使用它甚至会带有确认消息-y),因此您可以认为最终用户已经拥有该信息;
  • 如果您运行git difftool -d:该工具将面对两个目录,并且每个要比较的文件都将具有完整的相对路径,因此您可以使用它。

也许答案是你根本不必费心:)

于 2020-07-18T21:38:07.273 回答