从私信到协作开发:GitHub Pull Request 的发展史
🧵 本文由 Chris Wanstrath (GitHub Co-Founder) Twitter 上某 Thread (https://twitter.com/defunkt/status/1623393340967501824) 启发。
Pull Request 发展史
代码审查 Code Review
Pull Request 2.0
合并按钮 The Merge Button
合并队列 Merge Queue
番外
关于产品的思考
很难想象 GitHub 推出的时候并没有 Pull Request 这个功能,完整的 PR 工作流也是几年之后才逐渐完善的,团队花了很多年才创造了现在被认为理所当然的用户体验。不过,他们的想法「基于 web 的 git 工作流」从开始起就一直存在。
有很多关于产品的思考,我们现在(和未来)也正在推敲 & 完善在「数据库 CI/CD 流」上,如何能提供最优秀的用户体验。
Team work makes the dream work
Chris 提到「相信最好的那些软件是通过协作完成的,而 PR 就是一个很好的例子」,我们完全同意,Bytebase 的初衷就是促进 DevOps 团队进行更好的协作,我们在设计产品时也会考虑如何更方便、安全、高效地达到这一目的。
适当清理功能 🧹
上文提到的 Fork Queue 和私信这两项功能现在都没有了,不过他们存在过(就你会说废话),在 2012 年被优化了。合并按钮很好地取代了分叉队列,而且市面上不乏私信的工具,谁还需要多一个收件箱呢?https://github.blog/2012-04-03-spring-cleaning/
Schema 设计的重要性 🏗
另外,产品的功能来来去去,但涉及信息结构 Schema 的问题可能真的要从一开始就想清楚 😄。比如 13 年前,这个 PR 里定义的组织模型,也一直沿用至今。
关于 GitHub 为什么用的是 MySQL
Chris 提到了一个小插曲:在早期差点就把 GitHub 从 MySQL 迁移到 Postgres 了,甚至已经创建分支了,但他为私信功能写的一些糟糕的 SQL 查询语句在 Postgres 里面不 work,于是 MySQL 就留下来了 🐘。
最后我们再来总结一下 PR 的成长史:
🥚 2008 年刚推出的时候,PR 其实还是私信,不过不久就成为了独立按钮,很快用户也能评论提交的代码了;
🐣 PR 2.0 后,它才逐渐演变成一个完整的流程(更接近现在的样子),包含对于代码的讨论和前后对比
🐥 之后加上了了合并按钮,到今年进阶有了合并队列。