编写自定义的git合并策略的任何文件?

问题描述 投票:2回答:1

还有,我写我自己的代码来干净地把某些二进制文件类型。我试图通过增加在的.gitconfig的驱动器的合并的命令行和.gitattributes将文件添加表情指向我的合并计划,以添加自己的合并策略。

和它的作品 - 如果我做一个git与该文件类型合并,它会调用我的程序 - 如果我有1退出失败,并说有冲突 - 如果它0成功。

无论其 - 我无法找到它是如何获得参数的任何文件 - 即我怎么知道被合并哪些文件 - 哪些文件它被合并等,他们不来在为环境变量...我知道的驱动程序命令行我可以把一些变数,但随着不断摸索,$ PWD是,我发现,唯一可行的。

任何人都可以点我如何编写自定义合并策略的任何文件?

git merge
1个回答
5
投票

这个答案是两个部分,因为你描述的不是一个合并策略,而是合并驱动程序。

Merge strategies

我不认为有任何适当的文件。只有源代码。你可以得到的战略方面的工作如何使用GIT_TRACE,不过,因为git merge计算一些相关信息的好高度概括,然后运行git-merge-recursivegit-merge-octopus或您指定的任何其他-s <strategy>。如果你写你自己git-merge-oakey命令,运行git merge -s oakey,您可以查看参数。

Merge drivers

您的合并司机在the gitattributes documentation描述的方法调用(搜索定义自定义合并驱动程序)。该%字符替代将填写的各种参数。因为它说,无论你写%O%A,或%B,Git会填写保持从相应的指数阶段(复制出到工作树一个普通文件)中的数据的临时文件的名称。你预计会覆盖%A名的文件。

我怎么知道被合并哪些文件?

你不知道(也不可能告诉),其文件名是被合并;你希望只使用三个输入内容来完成你的工作。最终,不一定是单个文件名反正:混帐可能已经检测到重命名合并的一侧,使文件在合并基础命名foo和在一边,而另一边bar。 (由于Hasturkun noted in a comment,该%P占位符将扩大至何种名称的Git将会作为最后路径名的最佳猜测使用。不要使用此作为的三个输入到合并过程中的一个,虽然,这三个输入是在在%O%A%B文件。)

© www.soinside.com 2019 - 2024. All rights reserved.