HTML5技术

第一次向开源项目贡献代码的历程 - cotyb

字号+ 作者:H5之家 来源:博客园 2016-02-01 08:07 我要评论( )

第一次向开源项目贡献代码的历程 原文发表在我的博客主页,转载请注明出处。 前言 github大神请绕道而行~~~ 这篇文章并没有什么高深的技术,只是自己简单的一个历程,以及对github的体验,相信博客园有很多大牛或者即将成为大牛的人,呼吁大家多多开源,共同

第一次向开源项目贡献代码的历程

原文发表在我的博客主页,转载请注明出处。

前言

github大神请绕道而行~~~
这篇文章并没有什么高深的技术,只是自己简单的一个历程,以及对github的体验,相信博客园有很多大牛或者即将成为大牛的人,呼吁大家多多开源,共同进步,开始正文。
从我的使用角度来看,github主要有两个功能,一个是代码管理,另一个则是协同开发,之前一直用的是前一个功能,将代码写完之后,及时保存,及时提交,我一直用的是windows桌面版,觉得github真心好用、方便而且操作不难,不过前几天github也宕机过。。。
在去年下半年了做了一些SDN开源控制器ryu的工作,自己修改了ryu拓扑发现的逻辑,书写了源码,关于这个修改的详细介绍可以参见我的博客,这篇文章也得到了中国最大的sdn网络平台,sdnlab的认可和收录。向开源社区贡献的第一个代码便由此展开。

过程 贡献代码的起因

之前做了一些关于ryu的工作,书写了一些应用,在某次需要建立交大网络拓扑的时候,发现了ryu的拓扑发现能力有较大的局限性(最后经过比较,发现虚拟交换机CPqD的性能比OpenvSwitch也有一定差距),所以修改了ryu拓扑发现原理,之后放在了自己的github中,发表了一些博客,但是阅读和代码使用人数十分有限。
前几天SDN方面的一个牛人,在github上看到了我的工作,提了问题,并鼓励我将这部分代码贡献给ryu,所以激发了我第一次向开源工程贡献代码的想法。

贡献代码的过程

整个过程可以按照:书写代码->提交merge请求->编译检错->通过->。。。,因为目前只进行到了通过这一步,后面的待续,当然这整个过程都可以通过命令行来实现,这里主要说的是客户端。
在1月30号做完了手头的论文相关的工作之后,修改和完善了之前的代码,便开始提交,简述提交的过程:

  • 前文提过,我用的是github Windows上的客户端,如下图,之前已经fork过了ryu项目,并且clone到了本地,所以直接在本地修改代码

  • 修改之后,github客户端的changes会有提示,然后commit,同步到远程
  • 之后在guthub网页,自己的branch下,点击New pull request,进行合并,点击view pull request查看详细过程


  • 之后就会发现持续几分钟的编译过程,主要包括python代码正确性检测,以及最严格的PE8标准,由于之前的代码实在linux和Windows下都有编译的,所以格式有很多问题,包括空格tab键混用,空行白有空格,注释的#后面没有空格,以及类与类之间的空行数这些问题,来回折腾了好几遍,终于得到了如下图所示的编译通过。

  • 在检查通过之后,在发博客前不久看了下github网站上自己commit的状态,发现了一个问题,如下图,即“This branch has conflicts that must be resolved”。


    为解决这个问题找了些资料,最终发现是因为ryu的upstream(也就是ryu的最初创建者)commit了一些代码(不论是别人的pull requeest,还是merge等),证据如下图,可以看出osrg,也就是ryu的最初创建维护者,进行了新的merge,而且和自己修改的文件产生了冲突。


    解决办法:git fetch或者git clone获取最新版本,然后在客户端直接同步之后就会发现,已经自动进行merger的编译了,以下是最终结果:

    等待审核

    目前编译通过,等待进一步的进展

    总结

    开源让开发变得简单,开源让我们不再重复造轮子,开源大法好

  • posted @

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 【Vue 入门】使用 Vue2 开发一个展示项目列表的应用 - zhangjk

      【Vue 入门】使用 Vue2 开发一个展示项目列表的应用 - zhangjk

      2017-04-30 16:00

    • 如何做好项目管理任务分配 - CharlieChu

      如何做好项目管理任务分配 - CharlieChu

      2017-04-27 15:00

    • vue2.0版cnode社区项目搭建及实战开发 - sandisen

      vue2.0版cnode社区项目搭建及实战开发 - sandisen

      2017-04-20 14:00

    • 前端项目从0到1的感悟 - liliangel

      前端项目从0到1的感悟 - liliangel

      2017-04-20 12:00

    网友点评
    a