2017-02-20 90 views
0

我目前正在研究一個需要更改git源代碼的項目。我想改變源代碼,因爲當你設置一個合併驅動程序時,git總是首先運行它的diff算法,但是git diff算法沒有檢測到我的合併工具檢測到的一些衝突。如何調試git源代碼?

所以,我需要更改源代碼,以便git始終使用我的合併工具。要做到這一點,我需要更好地瞭解git merge code工作流程,但是讀取數百萬行git的源代碼不是一種選擇。我需要編譯和調試git源代碼,但我不知道哪個更好,以及如何去做。

請幫助:)

+1

你需要修改Git來完成這件事極不可能,特別是因爲Git在設計時考慮到了這個確切的用例。請解釋['git mergetool'](https://git-scm.com/docs/git-mergetool)如何不能滿足您的需求。 – Pockets

+0

我們開發的合併工具基於半結構化合並概念(即通過語法樹檢測衝突,而不是像非結構化合並工具那樣通過文本差異)。當git通過它的差異算法(基於非結構化合並)檢測到衝突時,合併工具被調用,並且該算法不檢測我們的合併工具檢測到的衝突。因此,我們需要始終使用我們的合併工具 –

+0

哦,我明白了 - 這絕對是一個更不尋常的用例。同時設置'git difftool'有幫助嗎? (我認爲你的合併工具可以適應報告)。除非您可能需要聯繫郵件列表([email protected])以瞭解如何執行此操作。 – Pockets

回答

0

所以,一段時間後,我想通了,如何解決我的問題,而不與Git的源代碼亂搞。我做了什麼?

  • 我的主要問題是,git diff算法沒有發現我們創建的半結構化合並工具可以找到的一些衝突。所以,爲了解決這個問題,我創建了一個自定義的僞差異驅動程序,這樣我的合併工具總是被調用來分析當前合併。

爲了做到這一點,我編輯的.gitconfig文件,並添加了這個假的差異驅動程序:

[diff "fake"] command = false

這解決我的問題,因爲現在合併司機總是叫:)