搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
出版时间 :
代码管理核心技术及实践
0.00     定价 ¥ 59.00
浙江图书馆信阅
持证读者免费借回家
  • ISBN:
    9787121328497
  • 作      者:
    作者:刘冉//肖然//覃宇
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2018-01-01
收藏
编辑推荐

√ 本书系统地总结了代码管理工具和优秀实践,便于开发人员随时查阅和参考

√ 书中介绍了很多从一线项目实践中总结出来的优秀实践

√ 作者对代码管理的方法论、工具及未来都有深刻的认知

√ 在一切“XX as Code”的风潮下,代码管理等同于高效的工程化开发

√ 本书是每一名写代码、使用代码或管理代码的人员值得拥有的经典书籍

展开
作者简介

刘冉,资深软件质量咨询师,拥有超过13年的软件开发和测试工作经验,熟悉自动化测试系统开发及敏捷中的QA,深入理解软件测试及SCM、CI。现在关注软件测试全自动化和敏捷中的QA,以及如何帮助大型团队有效地管理代码和CI,其中包括如何通过有效的代码分支管理、代码提交及CD保证和改进软件的质量。

 

肖然,精益敏捷专家,在过去15年的从业经历中,先后从事了算法复杂度研究、工业软件开发、全球项目管理,以及大型企业转型等工作。始终把软件开发作为自己的爱好,在各大企业和社区宣扬精益和敏捷的开发思想,践行有高响应力的开发理念。

 

覃宇,高级软件咨询师,拥有超过10年的移动应用开发经验,为Android技术专家、Git资深用户和狂热爱好者、“主干开发”的坚定拥护者和实践者,曾帮助多个客户团队改进代码管理、依赖管理、分支策略、持续集成等技术实践。

展开
内容介绍

《代码管理核心技术及实践》首先通过系统化的介绍和比较,从整体上讲解了代码管理工具和系统的历史和发展。其次分别从小型团队、中大型团队、分布式大团队、基于微服务的团队及开源团队的角度总结了代码管理的核心技术及实践经验,其中包括不同类型的团队对代码管理工具和系统的选择,以及代码管理的流程、策略和技巧,还有一些代码管理工具和系统的难点、痛点等,包括如何选择分支策略、如何管理多产品线的代码、代码备份策略,以及如何在大型团队中将代码从Subversion迁移到Git等。《代码管理核心技术及实践》可帮助读者在现实中从团队的大小及代码管理模式是集中式还是分布式、开源还是闭源等各个角度去了解和思考代码管理的核心技术和实践经验,从而帮助团队建立起一套高效的代码管理系统、策略和流程。

《代码管理核心技术及实践》的读者对象主要是每天都需要使用代码管理工具的程序员、代码管理工具和系统的管理人员,以及团队的技术领导人员。

展开
精彩书评

很多人对代码管理的概念仍然停留在版本化阶段,也许会对不断推陈出新的工具和功能感到新奇,但受限于变革的阻力,只能掩藏对高效开发的冲动,回到骨感的现实。殊不知,代码管理在现代软件开发中早已不再是版本化的代名词,它的实现与代码架构、产品线开发、团队组织结构、持续交付部署、问题跟踪都有着千丝万缕的联系。在一切“XX as Code”的风潮下,代码管理等同于高效的工程化开发。本书填补了市面上代码管理系统化相关书籍的空白,重要的不是工具本身,而是如何根据团队和产品的需求和现状,做出优秀的代码管理实践。

——ThoughtWorks洞见主编  张凯峰

 

以我的理解,代码管理本质上是对写代码的人的一种管理形式。类比控制论,人的编码行为的可能性空间是无限的,而代码的目标范围是明确的。为了实现目标,我们需要通过工具将人的编码行为缩小到可控的范围内,我们可以从中看到工具本身和如何使用工具的重要性。感谢作者系统性地总结了代码管理工具和优秀实践,便于开发人员随时查阅和参考,值得作为团队的常备书。

——迅达云成副总裁  崔康

 

代码管理是软件研发管理中的基础管理过程,这一过程是否规范、高效或优雅,直接折射出一个团队乃至一个组织的管理成熟度。作者在本书中从代码管理相关的工具、技术、管理策略出发,延伸到与代码管理息息相关的代码架构、依赖管理、持续集成、微服务等技术管理实践,由浅入深、娓娓道来。本书是每一名写代码、使用代码或管理代码的人员值得拥有的经典书籍。

——工行软件开发中心持续集成平台负责人  吴利华

 

版本控制系统是在任何严肃的工程中都必须用到的,就像水和空气一样重要。特别是在涉及多人协同、跨地域协作等内容的场景中,版本控制系统更是对项目的开发效率和代码安全起着决定性的支持作用。

本书介绍了版本控制系统的历史渊源及对常见的版本控制系统的使用,并根据不同的团队大小介绍不同的版本控制策略。难能可贵的是,书中介绍了很多从一线项目实践中总结出来的优秀实践,比如分支策略、持续集成的配合使用、大型分布式团队的协作等。除了理论知识,书中还提供了很多实际案例,读者可以通过对这些案例的学习,将这些原则应用到自己的工程中,以便让版本控制系统更有效地帮助团队。

——ThoughtWorks资深技术专家、技术作家

《JavaScript核心概念及实践》《轻量级Web应用开发》等书作者  邱俊涛

 

代码管理对于银行的一支核心队伍来说是非常重要的。一个系统有几十年的历史,经历了无数版本,有上千人的开发团队及多个国家的不同版本,所有这些都是一个复杂而庞大的工程。其中,代码管理对于工具、方法论及实践检验,都起着核心和基石的作用。作者对代码管理的方法论、工具及未来都有深刻的认知。整本书由浅入深地讲述了相关的概念,给出了相应的例子,很多个案都切中要害,值得有经验的从业人员认真阅读。

——某跨国银行软件开发中心测试经理

展开
精彩书摘

4.4.3  定制分支策略

前面列出了一些需要运用分支或者其他代替分支的手段来解决的并行开发的问题,但每个产品都有它自己的特色,肯定会出现意料之外的特殊情况。团队可以按照自己的需要来设计属于自己的恰当的分支策略,包括分支定义、工作流程、纪律及工具脚本。分支策略要遵循以下原则。

(1)尽可能避免长期存在的分支。如果出现了需要并行的情况,则请一定先克制自己想要创建分支的冲动,先想一想能不能使用其他方法来解决。抽象分支、特性开关都是解决这个问题的手段。

(2)分支需要经常正确合并。无论是本地分支还是复刻仓库中的分支,分支从哪里分裂就要最终合并回哪里(或者删除),避免在无上下游关系的分支之间合并。下游分支要经常从上游分支更新代码,而下游分支也要及时合并回上游分支。

(3)每次提交都需要进行审查和验证。任何作为发布候选版本的分支上的每一次提交都要进行代码审查和流水线验证,通过7步提交法来保证提交的质量,也要提供足够的持续集成基础设施。

(4)使用仓库复刻来引导团队间的协作。使用复刻仓库来隔离不同部门或团队的协作,保证核心组件仓库提交的质量,同时允许部门、团队及个人有独立仓库进行创新并鼓励贡献。

如果团队使用的是Git,则该团队一定听说过GitFlow的分支策略,也许会采用这种流行的分支策略。GitFlow是基于Git的强大分支能力所构建的一套软件开发工作流,最早由Vincent Driessen在2010年提出 。它把分支的使用发挥到了“极致”,使用了特性(feature)分支、发布(release)分支、修正(hotfix)分支、主干(master)分支及开发(develop)分支来处理不同的并行任务。这些分支又分为永久存在的两个主要分支:master分支和develop分支,以及除这两个分支外临时存在的支持分支,它们用于不同目的的任务。Vincent最早绘制的这份大图描述了这些分支之间的关系。

GitFlow虽然流行但备受争议,它有一些忽略了持续集成原则的地方。

(1)采用了长期独立存在的特性分支,也没有强调特性分支应该频繁地与master分支进行集成。

(2)长期存在的master分支没有实际的意义,这个分支保存的发布版本使用tag就足够了。

(3)hotfix分支的修改要合并到多个分支,容易遗漏(特别是遗漏与release分支的合并)。

(4)如果没有支持流水线即代码(Pipeline as Code)的持续集成基础设施,则每个分支都需要配置和维护流水线,工作量大。

如果团队已经采用了GitFlow的分支策略,则可以思考一下上述问题,做出调整。还有其他一些分支策略供参考,比如GitHub的GitHub Flow(和主干开发几乎一样)和GitLab的GitLab Flow,在决定采用这些分支策略之前,需要使用这些原则检验一下,量体裁衣。

在笔者经历过的项目中,有不少企业看到了第三代码管理软件的优势(成本低、灵活度高),纷纷从传统的第一代和第二代代码管理软件迁移过来。但是,由于思维定式和使用习惯的桎梏,在迁移的过程中只注重形式,并没有从根本上转变管理的思路。前面提到的层叠分支策略就是笔者曾经遇到的一个案例。该团队把代码管理工具由RTC切换成了SVN,但依然把SVN的分支当作RTC中的流来使用。而产品需求依然是按月排期的项目形式,这样就造成了多个月度的版本并行的状态,合并也没有制定规范,每次合并代码都是一次巨大的挑战。尽管第三代代码管理软件的功能十分强大,配置也很灵活,要模拟陈旧的分支策略并不是什么难事,但这种使用方式十分别扭,没有带来好处,反而打击了团队的积极性。

随着软件工程的发展,越来越多的开发工作变成代码并且代码可以越来越快地变成交付的软件产品。代码管理再也不是一个软件问题,它涉及了软件开发过程中的各个方面。老旧的代码管理软件跟不上时代进步且需要升级时,代码管理的实践也需要升级换代,在升级的过程中要考虑全面。

(1)基础设施和软件升级。即选择什么样的软件可以减少运维成本,提供足够的可扩展性,团队成员也容易掌握。

(2)产品架构改造。即采用什么样的软件架构进行模块化重构,可以在复杂度不断攀升时把模块进行分仓库管理。

(3)依赖管理。即选择合适的依赖管理机制,制定版本号规则,搭建合适的制品库。

(4)分支策略。即团队使用哪种分支策略提高响应力和并行能力。

(5)团队协作。即代码仓库的权限如何设置能不阻碍协作,又能鼓励创新。

展开
目录

第1部分  基础与传统

第1章  代码版本管理工具与系统  2

1.1  引言  2

1.2  代码版本管理工具的历史  3

1.2.1  第1代:本地代码管理  3

1.2.2  第2代:中心服务器代码管理  3

1.2.3  第3代:分布式代码管理  4

1.3  常用的代码管理工具  5

1.3.1  Perforce  5

1.3.2  Subversion  6

1.3.3  Git  6

1.3.4  Mercurial  7

1.3.5  Microsoft GVFS (Git Virtual File System)  7

1.4  常用的代码管理系统  8

1.4.1  Virtual SVN Server  9

1.4.2  GitLab Server  9

1.4.3  Gerrit Server  10

1.5  从Subversion迁移到Git的常用工具和方法  11

1.5.1  SubGit  11

1.5.2  git-svn  12

1.5.3  手动  12

1.6  常用云端代码管理系统  13

1.6.1  Sourceforge和Google Code  13

1.6.2  GitHub  14

1.6.3  GitLab和Bitbucket  14

1.6.4  Coding、码云、阿里云Code  15

第2章  独立小型团队  17

2.1  启程:团队与项目  17

2.2  痛点与需求  18

2.2.1  如何选择和搭建Subversion Server  18

2.2.2  定制代码库结构  20

2.2.3  分支策略  22

2.2.4  日常工作模式  24

2.2.5  备份策略  26

2.3  阿里云Code  27

2.3.1  将内网Subversion迁移到阿里云Code  28

2.3.2  权限管理  31

2.3.3  日常工作模式  32

2.3.4  备份方案  33

2.4  小团队代码管理的经典模型  34

第3章  传统中大型团队  36

3.1  传统大型团队的特点  36

3.2  独立大型团队在代码管理上的痛点与需求  38

3.3  大型团队代码管理案例  39

3.3.1  代码模块依赖管理  41

3.3.2  建立相关运作机制  44

3.3.3  建立原子提交的纪律  46

3.3.4  建立持续集成守护机制  47

3.3.5  大型团队代码管理小结  51

3.4  大型团队的代码服务器迁移  51

第2部分  当前与流行

第4章  分布式中大型团队  58

4.1  分布式中大型团队的特点  58

4.2  分布式中大型团队在代码管理上的痛点与需求  59

4.2.1  离线代码管理  60

4.2.2  在线代码审查  61

4.2.3  对代码进行分布式权限管理  66

4.2.4  对代码进行分布式提交和集成  73

4.3  代码仓库拆分与集成  74

4.3.1  优化单代码仓库  77

4.3.2  代码仓库的拆分  87

4.3.3  代码仓库的集成  91

4.3.4  小结  122

4.4  分支策略  123

4.4.1  主干开发分支策略  124

4.4.2  应对并行开发  132

4.4.3  定制分支策略  147

4.5  代码库热备份  150

4.5.1  服务器端热备份方案  150

4.5.2  客户端热备份方案  151

4.6  案例:Android定制化系统开发  151

4.6.1  项目背景  151

4.6.2  项目及其代码管理介绍  152

4.6.3  分支策略  155

4.7  多产品线  157

4.7.1  多产品线介绍  158

4.7.2  多产品线开发的困境  158

4.7.3  多产品线解决方案  158

4.8  超大型分布式团队  166

第3部分  发展与未来

第5章  云时代微服务大型分布式团队  172

5.1  云时代和微服务架构  172

5.2  Everything as Code(一切即代码)  173

5.3  代码管理团队自治  175

5.3.1  围绕团队的代码库管理  177

5.3.2  围绕服务的代码库管理  177

5.4  微服务架构下的代码管理挑战  179

5.5  微服务代码管理实例  180

第6章  开源项目与开源社区  184

6.1  开源软件  184

6.1.1  开源软件的特点  185

6.1.2  开源软件和社区  185

6.1.3  开源软件和商业  186

6.1.4  开源软件的代码管理  186

6.2  开源社区中的开源项目  187

6.2.1  简介  187

6.2.2  代码管理模型  187

6.2.3  典型的大型分布式开源项目  189

6.3  企业中的开源项目  193

6.3.1  简介  193

6.3.2  代码管理模型  193

6.4  GitHub中的开源项目实践  195

6.4.1  分支管理  195

6.4.2  分库管理  197

6.4.3  把公开代码库转换成私有代码库  203

6.4.4  GitHub的分支与复刻  205

参考文献  207

名词解释  209

展开
加入书架成功!
收藏图书成功!
我知道了(3)
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证