GIT客户合并驱动程序问题(Windows msysgit 1.9.0)

时间:2014-03-12 06:18:02

标签: git git-merge

在Git中,我们存储数据库中的数据。创建了一个自定义.Net应用程序,用于将此数据存储在文本文件中(每个表一个)。这工作正常,但随着越来越多的用户加入团队,我们遇到了许多合并冲突。

为了解决这个问题,我正在尝试开发一个自定义Merge驱动程序来替换Git的内置Merge驱动程序。我已经测试了应用程序,它在命令行中使用时按预期工作。但是当我将它集成到Git中时,我收到了这个错误。

$ git pull
First, rewinding head to replay your work on top of it...
Applying: test
Using index info to reconstruct a base tree...
M       FocalPoint/Data/OBV_USERS.TXT
Falling back to patching base and 3-way merge...
*PKEY Added[<USR_ID>PRJ8</USR_ID>] - In Both Kept Yours
*OBVDataMerge Mods[1] Ads[0] Dels [0]
error: addinfo_cache failed for path 'FocalPoint/Data/OBV_USERS.TXT'
Auto-merging FocalPoint/Data/OBV_USERS.TXT
FocalPoint/Data/OBV_USERS.TXT: unmerged (d9985c8288b16fb072c314e7aa68401ac5c30491)
FocalPoint/Data/OBV_USERS.TXT: unmerged (f18085d169223241c2f70a12bbdea7dc879d5bbf)
FocalPoint/Data/OBV_USERS.TXT: unmerged (af1e6a12f0d7fab318dba4be5317644595ef8745)
fatal: git-write-tree: error building trees

前缀为*的行只是我的应用程序所做的评论。

完成此操作后,“FocalPoint / Data / OBV_USERS.TXT”已正确合并(我的程序按预期工作),但存储库仍处于REBASE状态。

这是我的Git配置文件:

[merge "OBVData"] 
    name = OBVData Custom Merge
    driver = "DataMergeDriver.exe" %A %O %B
    recursive = binary

这是Directory上的属性文件,需要使用此合并方法的数据。

* merge=OBVData

我的应用程序将只使用A O和B文件来计算如何更新A文件。这个A文件是拉动过程完成后FocalPoint / Data / OBV_USERS.TXT的内容。

我已经尝试过每一个我能想到的组合来解决这个问题,但是我不知道问题是什么。

1 个答案:

答案 0 :(得分:2)

经过几个小时的测试后,我发现了这个问题。问题是我发送Windows行结尾vs linux(“\ r \ n”vs vs“\ n”)。

如果使用%A指定的文件已更新并包含Windows Line结尾,则会出现上述错误。

添加这行代码后,一切都按预期工作。

       System.IO.StreamWriter outFile = new System.IO.StreamWriter(outFileName, false);
-->    outFile.NewLine = "\n";**
       foreach (LineItem li in L_Theirs)
       {
             outFile.WriteLine(li.Line);
       }