有没有办法编写一个可以挂钩git合并过程的脚本,并会在合并时自动解决以下合并冲突?
我们有一个由git控制的文件版本,其中(除其他外)包含必须都有递增整数值的定义。
MY_CONSTANT = 0xB;
ANOTHER_CONSTANT = 0xC;
此文件通常由多个开发人员同时编辑,并且很难合并:
开发者1补充说:
DEV1_CONSTANT = 0xD;
开发者2补充道:
DEV2_CONSTANT = 0xD;
合并后,我们实际上希望文件看起来像:
MY_CONSTANT = 0xB;
ANOTHER_CONSTANT = 0xC;
DEV1_CONSTANT = 0xD;
DEV2_CONSTANT = 0xE;
(最后一行已更改为 0xE 。)
但是,git会产生合并冲突(如预期的那样)。我希望自动解决此文件上的冲突。
答案 0 :(得分:1)
请参阅githook文件。阅读post-merge
hook的描述:
如果由于冲突导致合并失败,则此挂钩不会影响git merge的结果,也不会执行。
在当前版本的git中,没有类似merge-conflict-hook
的内容。
但是,您仍然可以实现自己的脚本来处理此问题。伪代码可能是:
system('git fetch origin master')
status = system('git merge origin/master')
if status!=0 && check_enum_conflict()
resolve_enum_conflict()
end
实际实施将非常复杂。你需要:
这将是非常复杂的工作。如果您认为值得,请这样做。
答案 1 :(得分:0)
没有版本控制系统可以自动解决这些冲突,因为它无法知道这些值在任何地方都不重要。
对我而言,听起来你并不关心每个常数分配哪个值,只要它们不同并递增。您是否考虑对这些常量使用枚举,并让编译器在编译时分配枚举常量的值?
我想发布一个示例,但您没有提到您正在使用的编程语言。