openSource 知:回合开源社区补丁

本文详细介绍了开源软件中补丁的回合(backport)概念,包括关键补丁、前置补丁(直接与间接)、后置补丁的分析与处理,以及补丁拓扑和漏合的影响与防范措施。作者强调了正确回合补丁的重要性,以避免潜在的软件缺陷和风险。

1. 前言

我们在使用开源软件的时候,一般会选定一个目标版本。这个目标版本可能是最新版本、最新稳定版、某个活跃度高的稳定版本、或者其它LTS版本。

我们选定的版本,在使用过程中可能会逐渐的发现一些缺陷,这些缺陷有可能在社区已经修复了,因为社区发布版本后,会继续向前演进(除非停止维护),某些缺陷会在更新的发布版本或开发版本中解决。如果我们要修复这些缺陷,大概有两种途径:一是升级到更新的版本,二是回合开源社区修复这些缺陷的补丁。

版本升级带来的影响可能很大,所以在升级未列入计划的时候,一般会采用回合开源社区补丁的方式来修复缺陷,这种方式就是本文要分析的内容。

2. 回合

回合,是指往回合入或向后移植的意思,英文是backport,并非是指大战三百回合中的回合。向后移植说明是从新到老,在开源软件中,回合一般有两层意思:一是开源社区新版本的修改回合到用户使用的老版本中,二是用户在老版本中开发的新特性或自研修复的缺陷回合到社区的开发版本中。本文要讲的是第一种回合。

2.1. 举例

假设我们使用的开源软件版本是 v1,git提交记录是 abcde(每个字母表示一次提交)。开源社区继续向前演进,git提交记录变成 abcdefghijklmnopq。我们在 v1 版本中遇到了缺陷,发现在 k 对应的提交上解决了,现在我们希望回合 k 提交对应的补丁到我们使用的版本上来解决这个缺陷。

a b c d e
a b c d e f g h i j k l m n o p q
                    ^

2.2. 关键补丁

缺陷情况有很多种,但一般情况下最后都是由某个局部导致的,这个局部可能是一个接口,通过这个接口最终可以确定是哪个文件。再根据这个文件的修订记录(查看方法:git log [options] 文件相对路径)进行分析,有明确说明的缺陷可以很直观的识别到,没有明确说明的往往就需要对每个提交记录做分析,最终确定哪个提交可以解决。

有的缺陷并不是一次提交就能解决的,一般会由某一个关键提交解决,这个关键提交还有一些前置提交。如果关键提交没有彻底解决,还会有一些后置提交,所以只回合 k 的提交往往是不够的。只有把缺陷相关的(直接的、间接的)提交都分析到位,最终回合 k 及其前后置(如果有)提交才能确保缺陷被修复。这也是回合开源社区补丁最复杂,最难搞的地方。

作者称这里的关键提交对应的补丁为关键补丁

2.3. 前置补丁

2.3.1. 直接前置补丁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

canpool

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值