2

我正在尝试从 meta-diff 套件中获取 lvdiff 以与 Git 一起使用。

我的 .gitconfig 看起来像这样:

[gui]
    recentrepo = C:/Users/Tanner/Desktop/FIRST 2010 Beta/Java/LoganRover
[user]
    name = Tanner Smith
    email = tanner@notimportant.net
[merge "labview"]
    name = LabVIEW 3-Way Merge
    driver = 'C:/Program Files/National Instruments/Shared/LabVIEW Merge/LVMerge.exe' 'C:/Program Files/National Instruments/LabVIEW 8.6/LabVIEW.exe' %O %B %A %A
    recursive = binary
[diff "lvdiff"]
    #command = 'C:/Program Files/meta-diff suite/lvdiff.exe'
    external = C:/Users/Tanner/Desktop/FIRST 2010 Beta/lvdiff.sh
[core]
    autocrlf = true

lvdiff.sh 看起来像这样:

#!/bin/sh

"C:/Program Files/meta-diff suite/lvdiff.exe" "$2" "%5" | cat

我的 .gitattributes 文件如下所示:

#Use a cusstom driver to merge LabVIEW files
*.vi merge=labview

#Use lvdiff as the externel diff program for LabVIEW files
*.vi diff=lvdiff

但是每次我做差异时,所有 Git 返回的是:

diff --git a/Build DashBoard Data.vi b/Build DashBoard Data.vi
index fd50547..662237f 100644
Binary files a/Build DashBoard Data.vi and b/Build DeashBoard Data.vi differ

就好像它没有使用它,甚至没有识别我的更改。有任何想法吗?

4

4 回答 4

2

我没有 LabView,但是您的配置有一些错误。

  1. diff.lvdiff 下的“external”设置应命名为“command”。
  2. 你的“%”lvdiff.sh应该是“$”。

在我的机器上(不是 Windows,没有 LabView),使用diff.lvdiff.commandand your.gitattributes就足以让git diff foo.vi运行外部差异驱动程序(我什至使用了路径名中有空格的差异驱动程序)。下面的错误配置diff.lvdiff是您看到“二进制文件”消息的原因,它是看起来是二进制文件的默认差异消息。您可能一直在考虑diff.external,它与 相关diff.foo.command,但适用于所有文本差异,而不仅仅是具有diff=foo属性的路径子集。

于 2010-01-02T21:17:26.477 回答
1

您的 LVDiff 在其路径中有一个空格,而您没有在引号内包含路径(就像您使用 LabVIEW 合并一样)。

LVDiff 不允许重复的文件名,也许 Git 将远程文件复制到您的系统并且不重命名文件。尝试编辑 lvdiff.vi 以重命名两个文件之一(我建议重命名第二个文件。

在此处查看一些说明

于 2010-01-03T07:50:17.493 回答
0

通过省略对应该执行合并的实际LabVIEW路径的引用,我成功地与Mercurial进行了合并:

[merge-tools]
LVMerge.args = $base $other $local $output
LVMerge.executable = C:\Program Files\National Instruments\Shared\LabVIEW Merge\LVMerge.exe
LVMerge.gui = True
LVMerge.binary = True
[merge-patterns]
**.vi = LVMerge
**.ctl = LVMerge
**.lvclass = LVMerge
**.xctl = LVMerge
**.lvlib =LVMerge

于 2010-03-27T13:02:13.800 回答
0

这取决于用 LabVIEW 编写的虚拟仪器 (VI)文件的大小和性质

  • 大小:即使这些文件是文本,但太小,默认情况下它们将被视为二进制文件
  • 性质:如果它们是二进制的,默认的差异或合并工具将不起作用。(因此,我想您的自定义差异设置.gitattributes可能不会生效。
    .gitattributes手册页假设差异仅适用于文本文件,其中可以生成补丁。也许应该定义一个textconv配置选项.vi来执行将文件转换为文本表示.)

在尝试在此SO 答案中设置自定义合并时,我遇到了与非常小的文本文件类似的问题。

于 2010-01-02T20:19:10.993 回答