Appium testerhome 开源项目代码贡献流程 (草稿)

陈恒捷 · 2015年03月05日 · 最后由 剪烛 回复于 2015年03月05日 · 2374 次阅读

为了统一大家贡献代码的方式并保证以后有新成员加入能尽快熟悉如何贡献代码,制定此流程。所有贡献者应当按照此流程贡献代码。
参考资料:http://blog.csdn.net/zhangdaiscott/article/details/17438153

代码贡献流程(贡献代码给 testerhome 的 代码库):

目前团队采用分组制,请小组成员去 fork 组长的, 组长 fork testerhome 的。
组员统一按照下面的流程以 pull request 形式提交,组长在下面流程的基础上 merge 组员的 pull request 后发 pull request 给 testerhome(为了能方便地找到作者,里面应包含各组员的 pull request 的 merge 记录 )。
除特别情况,尽量不要直接在 testerhome 的代码库中 commit 以保证所有变更都有第三方评审。

第 1 步. 在 github 上 fork 你想修改代码的代码库(如 testerhome/appium )

第 2 步. git clone 你 fork 的代码库到本地

$ git clone your/repo/url

第 3 步. 在本地 根据你这次修改的目的建立一个主题 ( topic ) branch 修改你的代码。例如你想修复原项目一个和 unicode 相关的 issue :

$ git branch fix-unicode-error
$ git checkout fix-unicode-error

第 4 步. 在主题 branch 下完成需要的工作。

在本地不断地 修改/add/commit/reset/revert ,也可以不断 pull 到自己的 github 库上。

  • 工作中途发现源项目代码更新,可通过 rebase 导入来自上游库的更新。 例如(假设上游 branch 为 upstream/master )
git rebase upstream/master fix-unicode-error

第 5 步. 准备发送 pull request

考虑到本地修改可能会存在不少琐碎的历史,所以发送 pull request 前需要压缩请求(squash),把本地多个 commit 合并成一个。

git checkout master
git merge --squash fix-unicode-error
git commit

然后在 commit 交互界面中把 log 改为你此次发送 pull request 的 目的(如这里的目的是 fix unicode error )

注意:此处的 log 及下一步的 pull request log 中都 使用纯英文

第 6 步. 发送 pull request。

在 github 界面有个 pull request 按钮。点击去后左边是 base branch ,右边是 head branch 。

  • base branch:相当于 target branch ,你希望 Pull Request 被 merge 到上游项目的哪个 branch 里。

  • head branch:相当于 source branch ,你希望自己开发库里的哪个 branch 被用来进行 Pull Request(这里应该用 master branch )。

选择完后,下面会出现 diff 信息及包含的 commit 历史。确认无误后提交并在 log 中注明此次提交的目的。

至此,一个完整的贡献流程跑完。下次再跑的时候,可以直接从第三步开始。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 5 条回复 时间 点赞

@Monkey @lihuazhang @seveniruby @doctorq &各位了解 github 贡献流程的童鞋麻烦看看这个流程有没有问题?

目前团队采用分组制,请小组成员去 fork 组长的, 组长 fork testerhome 的。

成员 fork 组长的,对于 upstream 是要添加 remote 的吧?

我一直用的 github 的 windows 客户端,不知道是否有局限

@lihuazhang 你的意思是第 4 步 rebase 里面的 upstream 要添加 remote 连接到 testerhome 或者 appium 官方 ?我是通过 github 网页来做 fork 和 pull request 操作的。
@shixue33 你试试 github 的 windows 客户端能不能完成上面的操作?可以的话就没问题。

#4 楼 @chenhengjie123 windows 客户端只能完成 clone 项目到本地,以及 commit,rebase 需要 TortoiseGit。
rebase 操作是用在本地版本与我 fork 的分支版本不对时候用来同步文件的么?
那如果我 fork 了 testerhome/Appium ,我的分支是 shixue33/Appium,testerhome/Appium 发生更新了,我的分支怎么保持跟 testerhome 的分支文件一致?

rihkddd 记一次 Java 应用内存泄漏的定位过程 中提及了此贴 06月03日 15:25
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册