有时我需要修改第三方库以满足我的特定需求。它可以是错误修复,性能改进,添加功能等。
例如,我将JSoup和Android支持库源包含到我的项目中并进行了一些更改。我也用Android源代码中的2个Java文件做了同样的事情。
我该如何记录?
答案 0 :(得分:11)
别。维护分叉版本的库非常痛苦,特别是当您想要升级库并需要反复向后移动更改时。更不用说有一天会有人忘记你的版本并使用标准版本。
因此总是尝试包含在没有您更改的情况下失败的测试用例(在您的代码中显示外部库中的错误)。
始终将您的更改提交给原始作者/维护者。提出问题并提供补丁。如果您的更改值得违反规则-1,则可能会包含在下一版本中。
提交库的原始源文件而不做任何更改。然后使用描述性消息提交每个改进/错误修复。最好包括发票/票证ID,它将指向您(或图书馆)的票务系统中的解释。
这样,在浏览此给定目录或项目的提交列表时,您可以轻松查看已更改的内容。如果提交消息不足以描述分叉和修改外部库的需要,则可以始终浏览问题/故障单。同样在理想的世界中,这样的提交是一个理想的补丁(参见规则0)。
奖金:我曾经想过通过maven插件自动分叉和修补外部库。基本上我们指示这个假设插件在特定库上应用给定的补丁。 Maven可以轻松下载源代码,重建,安装并自动包含修改后的版本,而不是目标工件中的原始版本。
无需维护分叉二进制文件,轻松升级,前提是补丁仍适用于新版本。有空闲时间在这里的人吗?