如何在项目中利用 git 提高工作效率

文/陈灵


华为无线网络产品线五级软件专家,在大型软件架构设计、性能优化方面有丰富的成功经验,多次荣获公司/产品线优秀软件架构实践表彰。

华为的明星博主,原创软件技术博客超过一百篇,愈十万字,促进了软件领域各种原理、方法、实践应用知识在公司内的普及。

 C++ 专家,著有《C++ Programming Guidelines for Embeded System》、《C++ 在嵌入式系统应用的五大问题及解决方案》等大部头。

公司早期 git 与社交编程的实践者和布道者之一,同时开创了公司的技术面试环节依据 github 记录考察能力的先河。


在最近参与的 OSS 优化项目中,我们应用 git 来作为优化代码版本管理、团队协作的工具。

在这个优化项目中,我们:

  • 前后创建了大约 20 个优化分支;

  • 累计完成了超过 350 次提交;

  • 累计完成了 41 次分支合并。

与此相对比的,在很多产品的一个 R 版本开发过程中,甚至不会有开发分支。得益于 git 以及 gitlab 提供的代码托管,上面这些工作(分支建立、分支合并)变得非常简单,极大的提高了整个工作效率。


为什么要使用 git 而不是 SVN?


如果仅仅把 git 当成一个替代 SVN 的工具,我认为不需要从这里找答案,现在有很多 git 教材,都会或多或少的把 git 和传统的集中式的版本管理工具,比如 CVS、SVN 进行一番对比,给出答案。

在基于问题——改进思维模式中,我们可以发现,期望从工具优劣的角度说服使用 git 而不是 SVN 是始终站不住脚的,因为 git 同样存在一堆自己的缺点,比如:太灵活、学习成本远高于 SVN 等。

所以要使用 git,我们必需要看到工具背后极力所倡导的一种团队开发的模式和理念,基于对这种模式和理念的探索,我们再谈 git,才是一件比较顺理成章的事情。

从性能优化这件事情本身来看,通过分析历史版本优化数据,我们可以看到:

  • 我们实际修改优化 100 个优化点,能够确认产生明显收益的,可能不到 50%,也就是说对于优化来说,如何管理好优化点的修改记录,这是最大的挑战。这个述求总结下来就是方便的回溯;

  • 在一个子系统、全系统优化项目中,优化启动、优化实施、优化效果确认整个闭环周期相对较长,通常的模式都是单独走自己的优化分支进行优化的实施和确认,实施完毕之后再进行反合。在这个过程中又在结合问题 1,就会发现,如果只有一个 SVN,多人协作是非常困难的事情。

协作模式


1、基于 SVN 的协作模式

我们先看基于 SVN 的协作模式,基本上如下:


(点击图片,查看大图)

我们现在对分支管理比较严格,要求一个主干。这个要求对于产品的发布版本没有问题, 但作为开发过程或者迭代要求来说,是不适应生产力发展的要求的。在上面这种模式下面,如果多个开发人员之间要共享协作,基本都是采取文件共享这种最低级的方式,采取人工对比合入的方式进行操作(图中步骤 2)。

在很多时候, 步骤 2、3 和 5、6 会成为开发过程中的瓶颈,花上大量时间合入、合入之后解决各种本地构建的问题。 我们通常会低估这些工作的难度,在项目计划上预留很少的时间来做这些事情。

其次,SVN 上分支同步、管理比较麻烦,如果同一项目在自己本地超过 3 个分支,并且要在不同分支之间切换、修改、合并是一件比较困难的事情。

2、基于 git 的协作模式

如果使用 git,协作模式类似如下:

  • Step 1,用户在本地创建新的分支;


  • Step 2,用户将分支 push 到一个公共服务器,以便其他用户获取该分支;

  • Step 3,第二个用户从远程服务器获取分支;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值