代碼管理核心技術及實踐 代码管理核心技术及实践

劉冉

立即出貨

買這商品的人也買了...

相關主題

商品描述

本書首先通過系統化的介紹和比較,從整體上講解了代碼管理工具和系統的歷史和發展。其次分別從小型團隊、中大型團隊、分佈式大團隊、基於微服務的團隊及開源團隊的角度總結了代碼管理的核心技術及實踐經驗,其中包括不同類型的團隊對代碼管理工具和系統的選擇,以及代碼管理的流程、策略和技巧,還有一些代碼管理工具和系統的難點、痛點等,包括如何選擇分支策略、如何管理多產品線的代碼、代碼備份策略,以及如何在大型團隊中將代碼從Subversion遷移到Git等。本書可幫助讀者在現實中從團隊的大小及代碼管理模式是集中式還是分佈式、開源還是閉源等各個角度去瞭解和思考代碼管理的核心技術和實踐經驗,從而幫助團隊建立起一套高效的代碼管理系統、策略和流程。本書的讀者對象主要是每天都需要使用代碼管理工具的程序員、代碼管理工具和系統的管理人員,以及團隊的技術領導人員。

作者簡介

劉冉,資深軟件質量諮詢師,擁有超過13年的軟件開發和測試工作經驗,熟悉自動化測試系統開發及敏捷中的QA,深入理解軟件測試及SCM、CI。現在關注軟件測試全自動化和敏捷中的QA,以及如何幫助大型團隊有效地管理代碼和CI,其中包括如何通過有效的代碼分支管理、代碼提交及CD保證和改進軟件的質量。

肖然,精益敏捷專家,在過去15年的從業經歷中,先後從事了算法複雜度研究、工業軟件開發、全球項目管理,以及大型企業轉型等工作。始終把軟件開發作為自己的愛好,在各大企業和社區宣揚精益和敏捷的開發思想,踐行有高響應力的開發理念。

覃宇,高級軟件諮詢師,擁有超過10年的移動應用開發經驗,為Android技術專家、Git資深用戶和狂熱愛好者、“主幹開發”的堅定擁護者和實踐者,曾幫助多個客戶團隊改進代碼管理、依賴管理、分支策略、持續集成等技術實踐。

目錄大綱

第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