在Git中,我们存储来自数据库的数据。我们创建了一个自定义.Net应用程序来将这些数据存储在文本文件中(每个表一个)。这很好用,但是随着更多的用户加入团队,我们遇到了许多合并冲突。
为了解决这个问题,我正在尝试开发一个自定义的合并驱动程序来替换Git内置的合并驱动程序。我已经测试了这个应用程序,当从命令行使用时,它可以正常工作。然而,当我将它集成到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这是目录中需要使用此合并方法的数据的属性文件。
* merge=OBVData我的应用程序将只使用A、O和B文件来确定如何更新A文件。在pull过程完成之后,这个A文件就是FocalPoint/Data/OBV_USERS.TXT的内容。
我已经尝试了我能想到的所有组合来解决这个问题,但是我不知道问题是什么。
发布于 2014-03-13 10:32:53
经过几个多小时的测试,我发现了问题所在。问题是我发送的Windows行结束于linux("\r\n“vs "\n")。
如果使用%A指定的文件已更新,并且包含Windows行结尾,则会出现上述错误。
添加这行代码后,一切都按预期进行。
System.IO.StreamWriter outFile = new System.IO.StreamWriter(outFileName, false);
--> outFile.NewLine = "\n";**
foreach (LineItem li in L_Theirs)
{
outFile.WriteLine(li.Line);
}https://stackoverflow.com/questions/22343457
复制相似问题