华为云大咖说-庄表伟:架构师的基本功——管理篇
807
2022-05-29
十年来研发工具链的变化
传统的研发管理平台,是工具的松散的整合——>现在是各个系统深度整合。
以前研发工具链的核心是缺陷跟踪、需求管理工具——> 如今Github这类代码检视工具成为核心,
这种变化与团队的组织架构变化有关, 十年前,角色定位清晰,界限分明,比如:开发、测试、运维、产品管理、用户。但现在,技术的进步使这种界限逐渐模糊,比如:敏捷、CI构建、测试驱动开发使开发和测试的界限模糊;比如:DevOps让开发和运维的界限模糊;用户的身份也发生了变化,源码开放,让用户从需求的提出方成为解决方案的参与方。
在这种变化中,Git逐渐成为了主流。
为什么是Git?
更加自由
* 人人皆可使用,人人皆可贡献。(对开源项目的推广尤为重要)
* 任何时间、任何地点都可贡献。(开源贡献、移动办公、云服务)
更加安全
* 分布式、多副本,降低存储介质损坏的风险。
* 数据不可篡改,防黑客攻击。入侵服务器,无法更改仓库。
质量更高
* 代码检视前置,在代码合入之前。
* 历史提交可修改,精益求精的质量文化。
Git谱系图
Git 是2005年 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git真正被世人了解和接受是在2008年Github的推出后。此后发生了基于Git的配置管理工具大爆发。2008年还有另外一个工具是Gerrit,它是谷歌开源的为安卓而生的Git工具。
如何做好代码检视
检视应该是对提交过程逐个提交的review,而不是对最终结果的review。
一个提交的修改量要少,以防说不清提交说明。
要写提交说明,提交说明出错的话要修改。
提交说明中需要包含测试用例。
修改提交的常用Git语句及修正历史提交示例如下图:
如何掌握Git?
学习方法:以Git数据结构、文件系统为线索,Git命令都是在操作他们。
四类Git对象
* 问题:没有提交的文件能够找回么?
——git add后的可能能找回(使用git fsck和dangling objects)
分支、reflog
* 问题:分支多了,是不是仓库空间占用变多了?
—— 一个指针而已,不会占用很多空间。
* 问题:误用了git reset等操作破坏了当前分支,如何修复?
——从log中找到之前的恢复。
* 问题:为什么仓库做了裁剪,执行git gc,不见仓库变小?
——reflog中的历史提交没有丢弃。
DAG与三路合并
* 问题:为什么提交回退(revert)、脏合并,导致合并中提交丢失?
切莫采用SVN一样的工作流
抱怨:SVN提交只需要一个commit命令就够了,Git为什么要两个命令(git commit和git push)?
提出这个抱怨的用户一定是有两个地方做错了。一是把Git的工作流做错了,不应该用共享仓库式的工作流。另一种是不应该一次commit提交一次,而应该是多次commit一个特性提交一次。
抱怨:我的提交被别人的强制推送(push--force)覆盖了。
出现这个问题就是因为采用了共享仓库式的开发。使用这种方式的A和B可能会发生的问题如下图所示。如果使用共享仓库式,建议采用第三个方式。
包含代码检视的工作流
新的集中式工作流
华为内部采取的一种新的集中式工作流:
新的集中式工作流示例:
实践中可能遇到的问题
选择合适的工作流
* 提交说明规范。
* 工作流规范。
* 编译构建流程。
精细代码授权
* 代码私密性,Git不支持路径授权,而是更大粒度的仓库授权。
* 所以,授权是仓库分仓的原因之一。
大仓库管理
* 历史文件清理:git filter-branch。
* 二进制文件管理:Git-LFS。
* 分而治之:分仓。
多仓库管理
* 子仓库过多(10个以上?)不要使用submodule。此时推荐使用Android风格的多仓库管理,由华为开发,叫做Git-MM。
提问和解答
在非开源项目里,我不希望程序员或者产品经理之类的角色能拿到所有代码,要注意什么?
答:将敏感的部分包括相关提交拿出来变成一个新的仓库,这个工具叫Git fit branch,具体可以查看电子版《Git权威指南》,见www.worldhello.net
SVN的历史转到Git能否保留?
答:可以保留,使用Git svn这个工具可以实现历史保留。
如何更有效的解决冲突?
答:最好就是进行好的模块化设计,不要产生冲突。如果不可避免的发生了冲突,win上有很多代码合并工具。
Git cherry-pick的原理是什么?
答:可以理解为将需要拣选的提交做成一个patch,再重新打到需要拣选的新的分支上去。感兴趣的话可以去看一下源码。
如何说服boss从SVN转到Git?
答:有很多策略,如:友商都用Git,用Git可以做代码review让代码质量更高,开源社区都在用Git,SVN的维护成本高、安全风险大。
视频链接:https://m.qlchat.com/wechat/page/topic-intro?topicId=840000204169950
以上文字内容由【内容众创兴趣小组-孔皮皮】整理。
软件开发云
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。