2010-01-02 79 views
2

我想從meta-diff套件中獲取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 

但每次我做一個差異,所有的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 

它就像它不使用它,甚至承認我的變化。有任何想法嗎?

+0

剛剛完成我的回答:如果你的文件是二進制文件,你需要通過textconv選項定義它的文本表示。 – VonC 2010-01-02 20:31:22

+0

Textconv?這是什麼? – Tanner 2010-01-02 20:33:21

+0

@Tanner:如果是您在'.gitattributes'文件中添加自定義比較的選項,以引用能夠將二進制文件轉換爲文本表示的程序。請參閱'.gitattribute'手冊頁中的段落「執行二進制文件的文本差異」。 – VonC 2010-01-02 20:44:22

回答

0

這取決於你的V的大小和性質LabVIEW編寫的irtual instrument (VI)文件

  • 尺寸:即使這些文件是文本,但太小了,他們將默認爲二進制
  • 自然治療:如果它們是二進制文件,默認的差異或合併工具將不起作用。 (因此您的自定義DIFF由.gitattributes設置可能不踢,我想。
    .gitattributes man page只承擔一個diff爲文本文件,其中可以產生的補丁,也許是個textconv配置選項應該被定義爲執行的轉換.vi文件轉換爲文本表示。)

我有一個類似的問題,具有非常小的文本文件,而試圖建立一個自定義的這個SO answer合併。

+0

大多數vi文件大約10- 40KB,儘管少數大約在5-8KB。有問題的文件至少有24KB,所以我不明白這會是什麼問題。 – Tanner 2010-01-02 20:28:03

+0

爲了記錄,.vi文件*是*二進制。 – 2010-01-03 02:35:26

2

我沒有LabView的,但也有是錯誤配置的幾個位。

  1. diff.lvdiff下的「外部」設置應該命名爲「command」。
  2. 的「%」在你lvdiff.sh也許應該是「$」。

在我的機器(沒有窗戶,沒有LabView的),使用​​和你.gitattributes就足以讓git diff foo.vi運行外部差異司機(我甚至使用的路徑空間的差異驅動程序)。 diff.lvdiff下的錯誤配置是您看到「二進制文件」消息的原因,它是顯示爲二進制文件的默認差異消息。你可能已經中diff.external,這是關係到diff.foo.command思考,但適用於所有texual的diff,而不僅僅是用一個diff=foo屬性路徑的子集。

1

你LVDiff有一個空間,而你不包括引號內的路徑(如你使用LabVIEW合併做),它的路徑。

LVDiff不允許重複的文件名,也許Git的拷貝遠程文件到您的系統,不重命名文件。嘗試編輯lvdiff.vi重命名這兩個文件中的一個(我建議重命名第二個文件。

看到一些指令here

0

我是通過ommitting參考,以實際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