https://martinfowler.com/articles/branching-patterns.html
可能是我目前看过的关于版本控制工作流最好的一篇文章了,很全也很细。前前后后读了好多遍,感觉每次都有新收获。
下面是我的以下感想:
- 开源项目的 flow 和商业项目的完全是两回事,前者适合功能分支模式,后者最好的是持续集成。但很多时候对开源的货物崇拜导致了很多商业项目也去附和开源项目的 flow 。
- 集成频率和测试代码是持续集成的关键,前者通过频率来减少合并的痛苦(冲突),后者保证了主线的健康性。功能分支在持续集成里反而是可有可无的东西。
- 功能分支模式是穷人的模块化架构,不是构建在运行时/部署时能够轻松开启和关闭功能的系统( Keystone Interface 、Feature Flags ),而是它们将自己与源码控制耦合,通过手动合并来提供这种机制。
- 我感觉很多人其实根本就没有做到持续集成,他们只是用了持续集成工具。
- 分支并不是越多越好,而且正好相反。
- 集成前 Code Review 在商业项目中并不是必要的,相反它还会引起集成摩擦,降低集成频率。一个配合的很好的团队甚至可以放弃它。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/1072486
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.