热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

纪念下我对开源社区的首个贡献一个flink中文文档翻译相关的commit

前言作为一名十四年整体IT经验,且包含六年大数据开发运维架构设计方案咨询经验的IT老兵,明哥有些惭愧,这些年来对于开源社区,

前言

作为一名十四年整体IT经验,且包含六年大数据开发/运维/架构设计/方案咨询经验的IT老兵,明哥有些惭愧,这些年来对于开源社区,一直都是拿来主义,虽然为了适应业务需求有时会基于开源版本进行二次定制开发,但从来没有回馈过社区。

近两三年来,尤其是从2019年初阿里收购了flink背后的商业公司Data Artisan后且成立了商业公司Ververica后,flink在国内发展的如火如荼,已经成为国内流处理领域事实上的首选框架,使用该技术的公司也逐渐从互联网行业渗透到其它传统行业。同时 Apache Flink 中文社区通过各种 summit 和 meetup,以行业实践案例,博客分享,专业教程等不同形式,也在不断布道推动flink的发展和应用,在flink官网上更是专门推出了中文版,来适应英文不太好的小伙伴。

在这样的大背景下,明哥公司的流处理框架选型默认也切换为了flink。同时,本着拥抱开源回馈开源的精神,明哥觉得有必要回馈开源社区做出自己的一份贡献了。对明哥来说,一个很好的切入点,就是给flink社区贡献文档和中文翻译,因为这刚好可以用上明哥良好的英文功底(明哥毕竟是当年高考英语成绩131.5,工作后在外企HP/IBM工作了十年,与美国人加拿大人巴西人新加坡人甚至印度人各种会议历练过来的。哈哈,扯远了。)

如何开始准备工作

其实为方便对社区不熟悉的贡献者快速上手,flink中文社区做了很多工作,比如在官网首页特地详细讲述了如何贡献,也特地开辟了中文版页面:

在官方wiki中也专门有个页面,讲述如何参与中文翻译相关贡献:

在知乎专栏上也有篇文章,详细描述了“如何从 0 到 1 参与 Flink 社区”:

贡献首个commit的经验教训

完成首个commit的贡献后,明哥确实有几个经验教训跟小伙伴们分享下。

第一个经验:主动沟通,遇到问题积极寻求帮助。大家可以看到,我这个jira因为长时间没有更新处于了“ stale-assigned”状态,这其实是因为明哥对社区pr流程不太熟悉,虽然很早就完成了相关的翻译工作,Pull-request也早就available了,但没有主动联系社区相关人员进行review,而没有review过的代码,哪怕只是文档或中文翻译相关的修改,社区都不会merge到master主分支的。所以在社区进行合作时,我们要主动沟通,遇到问题积极寻求帮助。

第二个经验,需要熟悉git相关流程和命令,以及社区在这块的规范。比如在自己私有仓库的分支中修改完代码后,需要基于master分支的最新代码进行rebase(而不是merge!!),比如commit时要归并为一个commit且comment要符合社区规范。

在此着重感谢下Jark Wu Jark 老师,和Jingsong Lee 之信老师,正是在你们的帮助下,我才成功完成了首个commit, 谢谢!

git相关干货

最后来点git相关干货,供大家参考。其实git官网有更详细的资料,网上也有不少不错的博客,大家可以查阅。我这里仅仅列出一些自己本次commit中需要注意的命令和一些小技巧汇总给大家。


git push远程分支前,需要先 rebase到最新的apache master分支:

git checkout master
git pull apache master
git log --oneline -5
git checkout FLINK-18199
git rebase master
git log --oneline -5
或者:
git checkout FLINK-18199
git status
git log --oneline -5
git pull --rebase apache master
git log --oneline -5

git push 到远程仓库之后,如果需要回滚(撤销)代码改动,操作步骤如下:

1. git log 查看提交日志;然后 git reset --hard 版本号 回滚到特定提交;
2. git pull apache master: 拉取社区最新版本;
3. git log 查看提交日志;然后 git cherry-pick commitID : chrry-pick特定的提交;
4. git push origin master --force: 提交到远程仓库;
5. create pull request;

相关命令说明:

git reset –soft 不会改变工作区和stage区,仅仅将commit回退到了指定的提交 ;
git reset –mixed 不回改变工作区,但是会用指定的commit覆盖stage 区,之前所有暂存的内容都变为为暂存的状态 ;
git reset –hard 使用指定的commit的内容覆盖stage区和工作区;
git reset --soft HEAD^1;
git revert 是撤销某次操作,而不是恢复到某个版本;
git revert 最新版本号 次新版本号... 要回滚的版本号(为避免冲突,只能一步一步回滚到你想要的版本号);
git commit --amend: 提交本次修改,和上一次的提交合并为一个提交,并修改comment;

欢迎大家拥抱开源,使用开源,回馈开源!祝大家五一节日快乐!



推荐阅读
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 在编写业务代码时,常常会遇到复杂的业务逻辑导致代码冗长混乱的情况。为了解决这个问题,可以利用中间件模式来简化代码逻辑。中间件模式可以帮助我们更好地设计架构和代码,提高代码质量。本文介绍了中间件模式的基本概念和用法。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • struts2重点——ValueStack和OGNL
    一、值栈(ValueStack)1.实现类:OGNLValueStack2.对象栈:CompoundRoot( ... [详细]
  • 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)【下载本文PDF进行阅读】设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • 给出一群女孩的重量和颜值和她们的朋友关系现在有一个舞台ab是朋友bc是朋友ac就是朋友给出最大承重可以邀请这些女孩来玩对于每一个朋友团体全邀请or邀请一个or不邀请问能邀请的女孩的 ... [详细]
  • BPM是什么软件?1、BPM是BusinessProcessManagement的简称,译为业务流程管理,它是一种以规范化的构造端到端的卓越业务流程为中心以持续的提高组织业务绩效为 ... [详细]
  • rabbitmq杂谈
    rabbitmq中的consumerTag和deliveryTag分别是干啥的,有什么用?同一个会话,consumerTag是固定的可以做此会话的名字,deliveryTag每次接 ... [详细]
  • 用LGWR WORKER的例子介绍strace分析Oracle数据库行为的方法
    可观测性能力是IT运维的强有力的支撑。日志告警、指标是两种在运维中很常用的可观测性指标。 ... [详细]
  • 物联网、工业互联网大数据的特点-随着数据通讯成本的急剧下降,以及各种传感技术和智能设备的出现,从手环、共享出行、智能电表、环境监测设备到电梯、数控机床、挖掘机、工业生产线等都在源 ... [详细]
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
author-avatar
看不见的风2502871717
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有