今天看啥  ›  专栏  ›  我妻礼弥

如何给开源项目贡献代码,以spring为例

我妻礼弥  · 掘金  ·  · 2019-11-19 13:55
阅读 52

如何给开源项目贡献代码,以spring为例

首先要敢于迈开这一步,不用把这件事情想的很困难,即使是 spring 这种级别的项目,普通人也可以参与进来。

从小事做起,别好高骛远

有的人一上来就想着给开源项目贡献核心代码,这其实非常不现实,特别是 spring 这种级别的项目,代码需要严格要求按照官方要求来编写,并且需要编写全方位的测试用例。提交之后还要被 spring 官方层层严格审查,经常1、2个月都不一定能合并到主分支中。

所以可以从最简单的地方入手,比如文档、注释、简单的逻辑错误等。这些地方不仅容易入手,而且通过官方审核的几率也更大些,合并速度也更快。

有的人可能又要说了,这算什么,这也算贡献。的确,这些都是些小事,但如果有1万个人做了这些小事,加起来会对该项目产生巨大的帮助。

另外这些小事可以帮你入门这个项目,为之后核心代码的提交打好基础。

从工作中发现问题

虽然提倡给开源项目做贡献,但也没必须专门去研究某个开源项目,除非你特别想参与到该项目中。

像我,更多的是在工作中发现了问题,然后顺手解决一下,举手之劳嘛,人人为我,我为人人。

说了这么多是希望大家不要好高骛远,即使是很小的问题,遇到以后顺手解决一下,也是对开源事业的一种贡献。

接下来,我会通过一个非常简单的案例来展示如何为 spring 项目贡献代码。

案例

在我封装Redis 操作类的时候(参考基于 RedisTemplate 自定义 Redis 操作类),发现

spring-data-redis-2.1.11.RELEASE-sources/org/springframework/data/redis/core/ListOperations.java

leftPush() 方法与描述验证不符,而且给的redis的网址和命令也是错的

类似的情况还有 177行的 rightPush() 方法

刚开始和大部分人的想法一样,这种小事懒得去管,后来想了一下,可能有人会因此而产生误解,于是还是尝试着去给官方修复一下,也算是为 spring 项目做点小小的贡献。

有人可能想说不就改个注释吗,这算什么贡献!对于这种人我只想说,就是因为有你这样的人,所以这个小小的错误才一直留到现在还没有修复!

整体流程

整个过程主要分为5步

  1. fork 项目
  2. 将贡献代码提交到自己fork的项目上
  3. 去 spring jira 上创建一个问题,并获得唯一标示码
  4. pull requests 并加上唯一标示码
  5. 等待官方审核

fork 项目

点击 fork 就会拷贝一份当前项目到你自己的仓库

提交代码到自己fork的项目上

去自己的仓库把项目下载下来

然后在本地修改好后,提交,push到你的远端。

spring 项目对缩减等代码格式有要求,参考 Spring 项目 贡献准则 准则里面提供了格式化的工具

注意,spring 项目使用制表符缩进而不是4个空格

在 spring 官方的错误跟踪器,创建一个问题

Spring JIRA 是Spring 官方的错误跟踪器,对外开放,支持中文,注册也很简单,直接通过github授权。

创建好之后,在里面添加一个问题,尽量填写详细点,例如

之前那个方法与描述不匹配的问题已经被解决了,没法演示。这里展示的是一个新的问题。(是的,我后来又发现有注释写错误了)

创建好后会自动生成票据,如图中的红框

把它拷贝下来之后会用到

pull requests

得到 DATAREDIS-xxx 这个票据后,就可以 pull requests 了

检查你的代码,没问题就创建

最关键的一步来了,这里面提到的每一步都要仔细阅读,写的是 spring 对提交的格式和其他的一些要求

了解完条条框框后,开始正式提交

注意,红框中填写的内容要符合 spring 的要求

确认无误后提交

等待审核

提交之后等待审核

如果你是第一此贡献代码,还会要求你签署一个协议。

合并完成

你提交之后,会有人来处理,如果官方觉得没有什么问题会合并你的提交,如下

完成合并之后,主分支代码也变成你修改后的样子,然后该项目的贡献者中也会有你的名字




原文地址:访问原文地址
快照地址: 访问文章快照