2017-02-20 109 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

这解决我的问题,因为现在合并司机总是叫:)