新書推薦:
《
在虚无时代:与马克斯·韦伯共同思考
》
售價:NT$
260.0
《
斯大林格勒:为了正义的事业(格罗斯曼“战争二部曲”的第一部,《生活与命运》前传)
》
售價:NT$
840.0
《
日内交易与波段交易的资金风险管理
》
售價:NT$
390.0
《
自然信息图:一目了然的万物奇观
》
售價:NT$
640.0
《
经纬度丛书·州县之民:治乱之间的小民命运
》
售價:NT$
440.0
《
女性史:古代卷(真正意义上的女性大历史)
》
售價:NT$
560.0
《
你当我好骗吗?
》
售價:NT$
550.0
《
跨代伴侣治疗
》
售價:NT$
440.0
|
編輯推薦: |
本书系统地总结了代码管理工具和优秀实践,便于开发人员随时查阅和参考
书中介绍了很多从一线项目实践中总结出来的优秀实践
作者对代码管理的方法论、工具及未来都有深刻的认知
在一切XX as Code的风潮下,代码管理等同于高效的工程化开发
本书是每一名写代码、使用代码或管理代码的人员值得拥有的经典书籍
|
內容簡介: |
本书首先通过系统化的介绍和比较,从整体上讲解了代码管理工具和系统的历史和发展。其次分别从小型团队、中大型团队、分布式大团队、基于微服务的团队及开源团队的角度总结了代码管理的核心技术及实践经验,其中包括不同类型的团队对代码管理工具和系统的选择,以及代码管理的流程、策略和技巧,还有一些代码管理工具和系统的难点、痛点等,包括如何选择分支策略、如何管理多产品线的代码、代码备份策略,以及如何在大型团队中将代码从Subversion迁移到Git等。本书可帮助读者在现实中从团队的大小及代码管理模式是集中式还是分布式、开源还是闭源等各个角度去了解和思考代码管理的核心技术和实践经验,从而帮助团队建立起一套高效的代码管理系统、策略和流程。本书的读者对象主要是每天都需要使用代码管理工具的程序员、代码管理工具和系统的管理人员,以及团队的技术领导人员。
|
關於作者: |
刘冉,资深软件质量咨询师,超过13年软件开发和测试工作经验。熟悉自动化测试系统开发、以及敏捷中的QA,对于软件测试以及SCM和CI有深入的理解。现在关注于软件测试全自动化和敏捷中的QA,以及如何帮助大型团队有效的管理代码和CI,其中包括如何通过有效的代码分支管理,有效的代码提交以及CD来保证和改进软件质量。覃宇,高级软件咨询师,10 余年移动应用开发经验,Android 技术专家, Git 资深用户和狂热爱好者,主干开发坚定拥护者和实践者,曾帮助多个客户团队改进代码管理、依赖管理、分支策略、持续集成等技术实践。肖然,精益敏捷专家,在过去15年的从业经历中,先后从事过算法复杂度研究,工业软件开发,全球项目管理,大型企业转型等工作。把软件开发始终作为自己的爱好,在各大企业和社区宣扬精益和敏捷的开发思想,践行高响应力的开发实践。
|
目錄:
|
目录
第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.1Perforce5
1.3.2Subversion6
1.3.3Git6
1.3.4Mercurial7
1.3.5Microsoft GVFS (Git Virtual File System)7
1.4常用的代码管理系统8
1.4.1Virtual SVN Server9
1.4.2GitLab Server9
1.4.3Gerrit Server10
1.5从Subversion迁移到Git的常用工具和方法11
1.5.1SubGit11
1.5.2git-svn12
1.5.3手动12
1.6常用云端代码管理系统13
1.6.1Sourceforge和Google Code13
1.6.2GitHub14
1.6.3GitLab和Bitbucket14
1.6.4Coding、码云、阿里云Code15
第2章 独立小型团队17
2.1启程:团队与项目17
2.2痛点与需求18
2.2.1如何选择和搭建Subversion Server18
2.2.2定制代码库结构20
2.2.3分支策略22
2.2.4日常工作模式24
2.2.5备份策略26
2.3阿里云Code27
2.3.1将内网Subversion迁移到阿里云Code28
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.2Everything 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.4GitHub中的开源项目实践195
6.4.1分支管理195
6.4.2分库管理197
6.4.3把公开代码库转换成私有代码库203
6.4.4GitHub的分支与复刻205
参考文献207
名词解释209
|
內容試閱:
|
前言
我从2004年开始直到现在都在从事软件开发工作,经历了没有代码版本管理、代码集中式管理,以及现在的分布式代码管理,在这一过程中,我深刻体会到代码管理在软件开发中的重要性。近几年,随着软件开发规模越来越大,开发团队的规模也随之扩大,出现了越来越多的分布式团队,工程效率问题也越来越突出,比如QCon在2016年首次举办了工程效率提升专题。由此可见工程效率已经成为现代软件业中一个无法让人忽视的问题。
在工程效率这个范畴里,代码管理占据了举足轻重的地位,因为代码是开发人员每天工作的主要对象和内容,如果不能有效地管理,必然会影响开发人员的工作效率。随着团队规模的扩大,代码管理对团队工程效率的影响也越来越大。而高效的代码管理就像一根纽带,把所有程序员有效地串联起来,让程序员可以更高效地协同开发、编写代码,完成软件的开发工作。我们在咨询工作中遇到的很多客户都对使用代码版本管理有各种问题和困惑。出于以上原因,我们觉得有必要基于经验写一本代码管理实践相关的图书。鉴于时间有限,在本书中我们只选择了自己认为核心的技术及实践。
本书首先通过系统化的介绍和比较,让读者从整体上系统地了解代码管理工具的历史和发展。然后分别从小型团队、中大型团队、分布式大团队、基于微服务的团队及开源团队的角度,总结了代码管理的核心技术及实践,其中包括不同类型的团队对代码管理工具的选择、代码管理的流程、策略和技巧,以及一些代码管理工具和系统的难点和痛点等,可帮助读者在现实中从团队规模的大小、集中式还是分布式、开源还是闭源等角度去了解和思考代码管理的实践经验。
全书共分3部分,其中第1部分主要系统化地介绍了代码管理的历史和分类,列举并简单比较了业界常用的各种代码管理工具和系统,以及迁移工具等基础知识,以帮助读者更好地选择代码管理工具。主要以集中式代码管理工具Subversion为主,并以一个虚拟小团队的工作流程介绍小团队的代码管理实践,最后总结了我们经历过的传统中大型团队的代码管理的核心技术及实践。第2部分以介绍当前流行的分布式代码工具Git为主,结合大型软件项目和分布式开发团队介绍了当前流行的分布式软件开发中代码管理的核心技术及实践。第3部分主要介绍了正在兴起的微服架构下的代码管理实践,以及一种越来越重要的软件开发模式:开源模式下的各种代码管理核心技术及实践。
阅读提示:本书不是介绍代码管理工具的专业书籍,所以不会对书中提到的代码管理工具或系统进行全面性和系统性的介绍,所以读者需要对书中提到的代码管理工具或系统全面和深入地进行学习,并阅读与其对应的专业书籍,比如Subversion的Version Control with Subversion、Git的Pro Git等。如果读者来自一个大型团队,则可以略过第2章的独立小团队的内容,在剩下的章节中找到有用的知识点。如果读者来自一个小型团队,那么可以将第3、4、5章作为兴趣阅读,但是在尝试里面的一些核心技术和实践之前一定要认真思考,因为它们很可能并不适应读者现在的团队环境和规模。它们更像是一把双刃剑,所以不妨将这些内容作为未来团队扩张之前的知识储备。
书中难免存在一些错误和不妥之处,敬请谅解并欢迎指出,我们将及时修改并发表在勘误中,谢谢。
刘冉
2017年10月12号写于成都
|
|