LVDiff не работает в Git

Я пытаюсь заставить lvdiff из набора мета-диффов работать с Git.

Мой .gitconfig выглядит так:

[gui]
    recentrepo = C:/Users/Tanner/Desktop/FIRST 2010 Beta/Java/LoganRover
[user]
    name = Tanner Smith
    email = [email protected]
[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

Но каждый раз, когда я делаю diff, все, что возвращает 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

Как будто он не использует его или даже не распознает мои изменения. Любые идеи?


person Tanner    schedule 02.01.2010    source источник
comment
Только что завершил мой ответ: если ваш файл является двоичным, вам нужно определить его текстовое представление с помощью параметра textconv.   -  person VonC    schedule 02.01.2010
comment
@Tanner: если это опция, которую вы добавляете в свой пользовательский diff в файле .gitattributes, чтобы указать на программу, способную преобразовать ваш двоичный файл в текстовое представление. См. параграф Выполнение текстовых различий двоичных файлов на странице руководства .gitattribute.   -  person VonC    schedule 02.01.2010
comment
Но это будет иметь отношение к вашему случаю только в том случае, если ваши файлы .vi являются двоичными файлами.   -  person VonC    schedule 02.01.2010
comment
И какова будет ценность этого? Без глубоких знаний о двоичном файле не имеет смысла, что представляет собой текстовое представление.   -  person Ton Plomp    schedule 03.01.2010
comment
@Ton: значение этого параметра заключается в том, что инструмент сравнения не будет вызываться, если только он не уверен, что сможет сравнить текстовое представление (для создания исправления). Если это двоичный файл без какого-либо текстового преобразования, diff (пользовательский или нет) просто вернет простое сообщение (указывающее, что двоичные файлы идентичны или различны, и это все)   -  person VonC    schedule 03.01.2010


Ответы (4)


У меня нет LabView, но некоторые части вашей конфигурации неверны.

  1. «Внешняя» настройка в diff.lvdiff должна называться «команда».
  2. «%» в вашем lvdiff.sh, вероятно, должно быть «$».

На моей машине (не Windows, без LabView) использования diff.lvdiff.command и вашего .gitattributes достаточно, чтобы git diff foo.vi запускал внешний драйвер сравнения (я даже использовал драйвер сравнения с пробелом в имени пути). Неправильная конфигурация в разделе diff.lvdiff является причиной того, что вы видите сообщение «двоичный файл», это сообщение о различиях по умолчанию для файлов, которые кажутся двоичными. Возможно, вы подумали о diff.external, который связан с diff.foo.command, но применяется ко ВСЕМ текстовым различиям, а не только к подмножеству путей с атрибутом diff=foo.

person Chris Johnsen    schedule 02.01.2010

Ваш LVDiff имеет пробел в своем пути, в то время как вы не включаете путь в кавычки (как вы делаете с LabVIEW Merge).

LVDiff не допускает повторяющихся имен файлов, возможно, Git копирует удаленный файл в вашу систему и не переименовывает файл. Попробуйте отредактировать lvdiff.vi, чтобы переименовать один из двух файлов (я предлагаю переименовать второй файл.

См. некоторые инструкции здесь

person Ton Plomp    schedule 03.01.2010

Это зависит от размера и характера вашего vвиртуального инструмента (VI) файлы, написанные в LabVIEW

У меня была аналогичная проблема с очень маленьким текстовым файлом при попытке настроить пользовательское слияние в этом Так ответьте.

person VonC    schedule 02.01.2010
comment
Размер большинства файлов vi составляет около 10–40 КБ, хотя некоторые — около 5–8 КБ. Размер рассматриваемого файла составляет не менее 24 КБ, поэтому я не понимаю, в чем проблема. - person Tanner; 02.01.2010
comment
К сведению, файлы .vi являются двоичными. - person Joe Z; 03.01.2010

Мне удалось выполнить слияние с Mercurial, опустив ссылку на фактический путь LabVIEW, который должен выполнять слияние:

[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

тонна

person Ton Plomp    schedule 27.03.2010