我的Java项目依赖于第三方库,我们称之为xyz.jar。我的项目在svn中的git和xyz中维护。 xyz作为Maven依赖项包含在我的项目中,以便在构建过程中自动下载。
我需要对xyz的源代码做一些小调整,但仍希望从项目维护者那里获得更新。我有什么选择?
目前,最佳选择似乎是:
git svn clone
将xyz的svn repo分成 new git repo。当xyz出现新变化时,我可以执行git svn rebase
以使我的git repo保持最新状态。
这里的最佳做法是什么?我可以改进这种方法吗?
修改
我知道会涉及一些手动工作,例如解决合并冲突并确保我的补丁与最新的xyz兼容。我不是在寻找通用的自动代码合并解决方案。我试图找出在这种情况下最佳实践和工具是什么。
摇篮
我不认为这是Gradle特定的问题,但以防万一有Gradle特定的答案:我正在使用Gradle将xyz.jar包含为“编译”依赖项。
答案 0 :(得分:1)
无论您使用何种方法,它都将是劳动密集型的。
显式冲突将会发生,但更加阴险,基地中任何地方的任何变化都可能完全破坏您的本地模式,甚至是本地模组不接触的源文件的更改(即您依赖的接口签名)。
每个rebase都需要在第三方库和依赖于库的应用程序上进行手动合并和完整的回归测试。
根据定义,这不是自动化的。
答案 1 :(得分:0)
我认为你应该考虑以下几点:
我认为这种问题无论如何都不应该自动化,因为这种情况非常罕见,无论如何都需要你的人工干预。即你将花费更多的时间来尝试自动化,而不是像你手动重建一样,比如半年一次。