在Git中,我們存儲數據庫中的數據。一個自定義的.Net應用程序被創建來將這些數據存儲在文本文件中(每個表格一個)。這工作正常,但隨着更多用戶加入團隊,我們遇到了很多合併衝突。GIT客戶合併驅動程序問題(Windows msysgit 1.9.0)
爲了解決這個問題,我試圖開發一個自定義的合併驅動來替代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文件。這個A文件就是拉取過程完成後的FocalPoint/Data/OBV_USERS.TXT的內容。
我已經嘗試了所有我能想到的方法來解決這個問題,但是我很擔心這個問題。
也許退出狀態不是Git推斷的狀態?嘗試將你的exe調用包裝在一個unix shell中(甚至只是爲了測試,試着用一個簡單的unix腳本替換你的exe),只是爲了看看在這種情況下rebase狀態是否更好地管理。一個小腳本的例子:http://nuclearsquid.com/writings/git-tricks-tips-workflows/#gitattributes5 – VonC
我第二個這個。 Windows程序員傾向於完全忽略退出代碼,因爲他們通常使用的工具正在積極幫助他們這樣做;-)所以,是的,你的程序應該是類型控制檯(我想它已經是),不能退出,直到操作完成(也就是說,它不能產生另一個可執行文件並退出),並且它必須在成功解決衝突時返回0,否則返回非零值。 – kostix