第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
· · · · · · (
收起)