不带重命名检测的自定义Git合并驱动程序

9
我想建立一个带有自定义合并驱动程序的Git仓库,然后在合并时禁用重命名检测。
问题是,如果我使用默认的递归策略,我无法禁用重命名检测,如果我使用解决策略(不理想,但足够好),则合并驱动程序将被忽略。
请注意,即使文件内容完全匹配,我也想避免重命名检测。
.git/config:
[merge "my"]
    name = my merge
    driver = my_merge_driver %A %O %B
[merge]
    default = my

尝试:

$ git merge -X rename-threshold=200%  # Equivalent to 100%
$ git merge -s resolve                # Custom driver ignored
$ git --version                       # git version 2.2.0-rc0

Git 2.7.0 版本中是否仍然忽略? - VonC
1
我猜它仍然被忽略了,阅读我的旧答案http://stackoverflow.com/a/22579625/6309。 - VonC
确实,@VonC,我可以确认git版本2.7.0具有完全相同的行为。 - filipos
你能提供一些关于你的自定义合并驱动程序 my_merge_driver 的细节吗?或者它解决了哪些问题? - javabrett
@javabrett 当然可以这样做,但如果可能的话,我更愿意重用递归策略中的逻辑(当然不包括重命名检测)。 - filipos
显示剩余2条评论
2个回答

2

从Git 2.8.0.rc0版本开始,合并递归算法现在接受一个名为"no-renames"(提交4ce064d)的选项,因此我的问题现在已经得到解决。

$ git merge -X no-renames

1
考虑到您计划使用的情况,一个好的解决方法是在每个文件中写入文件名以及版本号。

我觉得它有点丑,需要对处理存储库的代码进行一些(简单的)更改,但是,好吧,它能用。奖励已过期。在接受答案之前,我会再等待一段时间看看是否有其他答案出现。 - filipos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接