我们的存储库包含多个源代码文件和一个构建工件文件(例如编译的蜂房蓝图)。
有一个构建脚本,我可以配置为这个文件的合并驱动程序,但是如果源还没有合并(或者至少它从合并状态构建,这是不正确的),它就会失败。有没有办法告诉git合并文件的顺序?git-diff
有一个-O<orderfile>
,但这似乎不适用于git-merge
。
2016年10月更新,适用于Git 2.11+(2016年第四季度)
git-diff
有一个-O<orderfile>
,但这似乎并不适用于git-merge
。
现在有了,但是对于git mergetool
:
参见David Aguilar (davvid
)的commit 654311b(2016年10月8日),commit 57937f7, commit 08221e3, commit 8827b3a(2016年10月7日)。
帮助:Johannes Sixt (j6t
)。
gitster
-在提交5b4c45a, 2016年10月17日)
mergetool
:荣誉-O<orderfile>
教
mergetool
将"-O<orderfile>
"传递给git diff
在命令行中指定。
git mergetool
手册页现在包括:
-O<orderfile>:
按照
<orderfile>
中指定的顺序处理文件,每行有一个shell glob模式。这将覆盖diff.orderFile
配置变量。要取消diff.orderFile
,请使用-O/dev/null
。
注意:orderfile格式仅在Git 2.12中有文档。
参见commit 874444b, commit 1a5fccc (15 Jan 2017) by Richard Hansen (rhansen
)。
(由juno C Hamano—gitster
—在commit 831bd5e中合并)
2015年8月原答
似乎问题来自于对合并驱动程序脚本的修改,除了对其他文件的修改。
当你合并你的分支时,合并驱动脚本本身还没有被合并。
为什么不在一个单独的、专用的分支中更新你的合并驱动脚本,然后先合并那个分支呢?
然后合并你的开发分支。
另一种方法也是使用包装器,正如OP Mikulas Dite所评论的那样:
事实证明,这真的很简单,创建一个自定义合并包装器,留下构建工件作为
-merge
。
包装器运行git merge
,如果除了工件之外没有其他未解析的文件,则运行构建脚本。