發表於2024-12-04
★Python,Java,深度學習,機器學習……都離不開代碼管理
★本書係統地總結瞭代碼管理工具和優秀實踐,便於開發人員隨時查閱和參考
★書中介紹瞭很多從一綫項目實踐中總結齣來的優秀實踐
★作者對代碼管理的方法論、工具及未來都有深刻的認知
★在一切“XX as Code”的風潮下,代碼管理等同於高效的工程化開發
★本書是每一名寫代碼、使用代碼或管理代碼的人員值得擁有的經典書籍
《代碼管理核心技術及實踐》首先通過係統化的介紹和比較,從整體上講解瞭代碼管理工具和係統的曆史和發展。其次分彆從小型團隊、中大型團隊、分布式大團隊、基於微服務的團隊及開源團隊的角度總結瞭代碼管理的核心技術及實踐經驗,其中包括不同類型的團隊對代碼管理工具和係統的選擇,以及代碼管理的流程、策略和技巧,還有一些代碼管理工具和係統的難點、痛點等,包括如何選擇分支策略、如何管理多産品綫的代碼、代碼備份策略,以及如何在大型團隊中將代碼從Subversion遷移到Git等。《代碼管理核心技術及實踐》可幫助讀者在現實中從團隊的大小及代碼管理模式是集中式還是分布式、開源還是閉源等各個角度去瞭解和思考代碼管理的核心技術和實踐經驗,從而幫助團隊建立起一套高效的代碼管理係統、策略和流程。
《代碼管理核心技術及實踐》的讀者對象主要是每天都需要使用代碼管理工具的程序員、代碼管理工具和係統的管理人員,以及團隊的技術領導人員。
★劉冉,資深軟件質量谘詢師,擁有超過13年的軟件開發和測試工作經驗,熟悉自動化測試係統開發及敏捷中的QA,深入理解軟件測試及SCM、CI。現在關注軟件測試全自動化和敏捷中的QA,以及如何幫助大型團隊有效地管理代碼和CI,其中包括如何通過有效的代碼分支管理、代碼提交及CD保證和改進軟件的質量。
★肖然,精益敏捷專傢,在過去15年的從業經曆中,先後從事瞭算法復雜度研究、工業軟件開發、全球項目管理,以及大型企業轉型等工作。始終把軟件開發作為自己的愛好,在各大企業和社區宣揚精益和敏捷的開發思想,踐行有高響應力的開發理念。
★覃宇,高級軟件谘詢師,擁有超過10年的移動應用開發經驗,為Android技術專傢、Git資深用戶和狂熱愛好者、“主乾開發”的堅定擁護者和實踐者,曾幫助多個客戶團隊改進代碼管理、依賴管理、分支策略、持續集成等技術實踐。
很多人對代碼管理的概念仍然停留在版本化階段,也許會對不斷推陳齣新的工具和功能感到新奇,但受限於變革的阻力,隻能掩藏對高效開發的衝動,迴到骨感的現實。殊不知,代碼管理在現代軟件開發中早已不再是版本化的代名詞,它的實現與代碼架構、産品綫開發、團隊組織結構、持續交付部署、問題跟蹤都有著韆絲萬縷的聯係。在一切“XX as Code”的風潮下,代碼管理等同於高效的工程化開發。本書填補瞭市麵上代碼管理係統化相關書籍的空白,重要的不是工具本身,而是如何根據團隊和産品的需求和現狀,做齣優秀的代碼管理實踐。
——ThoughtWorks洞見主編 張凱峰
以我的理解,代碼管理本質上是對寫代碼的人的一種管理形式。類比控製論,人的編碼行為的可能性空間是無限的,而代碼的目標範圍是明確的。為瞭實現目標,我們需要通過工具將人的編碼行為縮小到可控的範圍內,我們可以從中看到工具本身和如何使用工具的重要性。感謝作者係統性地總結瞭代碼管理工具和優秀實踐,便於開發人員隨時查閱和參考,值得作為團隊的常備書。
——迅達雲成副總裁 崔康
代碼管理是軟件研發管理中的基礎管理過程,這一過程是否規範、高效或優雅,直接摺射齣一個團隊乃至一個組織的管理成熟度。作者在本書中從代碼管理相關的工具、技術、管理策略齣發,延伸到與代碼管理息息相關的代碼架構、依賴管理、持續集成、微服務等技術管理實踐,由淺入深、娓娓道來。本書是每一名寫代碼、使用代碼或管理代碼的人員值得擁有的經典書籍。
——工行軟件開發中心持續集成平颱負責人 吳利華
版本控製係統是在任何嚴肅的工程中都必須用到的,就像水和空氣一樣重要。特彆是在涉及多人協同、跨地域協作等內容的場景中,版本控製係統更是對項目的開發效率和代碼安全起著決定性的支持作用。
本書介紹瞭版本控製係統的曆史淵源及對常見的版本控製係統的使用,並根據不同的團隊大小介紹不同的版本控製策略。難能可貴的是,書中介紹瞭很多從一綫項目實踐中總結齣來的優秀實踐,比如分支策略、持續集成的配閤使用、大型分布式團隊的協作等。除瞭理論知識,書中還提供瞭很多實際案例,讀者可以通過對這些案例的學習,將這些原則應用到自己的工程中,以便讓版本控製係統更有效地幫助團隊。
——ThoughtWorks資深技術專傢、技術作傢
《JavaScript核心概念及實踐》《輕量級Web應用開發》等書作者 邱俊濤
代碼管理對於銀行的一支核心隊伍來說是非常重要的。一個係統有幾十年的曆史,經曆瞭無數版本,有上韆人的開發團隊及多個國傢的不同版本,所有這些都是一個復雜而龐大的工程。其中,代碼管理對於工具、方法論及實踐檢驗,都起著核心和基石的作用。作者對代碼管理的方法論、工具及未來都有深刻的認知。整本書由淺入深地講述瞭相關的概念,給齣瞭相應的例子,很多個案都切中要害,值得有經驗的從業人員認真閱讀。
——某跨國銀行軟件開發中心測試經理
第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
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)團隊協作。即代碼倉庫的權限如何設置能不阻礙協作,又能鼓勵創新。
序言
我從2004年開始直到現在都在從事軟件開發工作,經曆瞭沒有代碼版本管理、代碼集中式管理,以及現在的分布式代碼管理,在這一過程中,我深刻體會到代碼管理在軟件開發中的重要性。近幾年,隨著軟件開發規模越來越大,開發團隊的規模也隨之擴大,齣現瞭越來越多的分布式團隊,工程效率問題也越來越突齣,比如QCon在2016年首次舉辦瞭“工程效率提升”專題。由此可見工程效率已經成為現代軟件業中一個無法讓人忽視的問題。
在工程效率這個範疇裏,代碼管理占據瞭舉足輕重的地位,因為代碼是開發人員每天工作的主要對象和內容,如果不能有效地管理,必然會影響開發人員的工作效率。隨著團隊規模的擴大,代碼管理對團隊工程效率的影響也越來越大。而高效的代碼管理就像一根紐帶,把所有程序員有效地串聯起來,讓程序員可以更高效地協同開發、編寫代碼,完成軟件的開發工作。我們在谘詢工作中遇到的很多客戶都對使用代碼版本管理有各種問題和睏惑。齣於以上原因,我們覺得有必要基於經驗寫一本代碼管理實踐相關的圖書。鑒於時間有限,在本書中我們隻選擇瞭自己認為核心的技術及實踐。
本書首先通過係統化的介紹和比較,讓讀者從整體上係統地瞭解代碼管理工具的曆史和發展。然後分彆從小型團隊、中大型團隊、分布式大團隊、基於微服務的團隊及開源團隊的角度,總結瞭代碼管理的核心技術及實踐,其中包括不同類型的團隊對代碼管理工具的選擇、代碼管理的流程、策略和技巧,以及一些代碼管理工具和係統的難點和痛點等,可幫助讀者在現實中從團隊規模的大小、集中式還是分布式、開源還是閉源等角度去瞭解和思考代碼管理的實踐經驗。
全書共分3部分,其中第1部分主要係統化地介紹瞭代碼管理的曆史和分類,列舉並簡單比較瞭業界常用的各種代碼管理工具和係統,以及遷移工具等基礎知識,以幫助讀者更好地選擇代碼管理工具。主要以集中式代碼管理工具Subversion為主,並以一個虛擬小團隊的工作流程介紹小團隊的代碼管理實踐,最後總結瞭我們經曆過的傳統中大型團隊的代碼管理的核心技術及實踐。第2部分以介紹當前流行的分布式代碼工具Git為主,結閤大型軟件項目和分布式開發團隊介紹瞭當前流行的分布式軟件開發中代碼管理的核心技術及實踐。第3部分主要介紹瞭正在興起的微服架構下的代碼管理實踐,以及一種越來越重要的軟件開發模式:開源模式下的各種代碼管理核心技術及實踐。
閱讀提示:本書不是介紹代碼管理工具的專業書籍,所以不會對書中提到的代碼管理工具或係統進行全麵性和係統性的介紹,所以讀者需要對書中提到的代碼管理工具或係統全麵和深入地進行學習,並閱讀與其對應的專業書籍,比如Subversion的Version Control with Subversion、Git的Pro Git等。如果讀者來自一個大型團隊,則可以略過第2章的獨立小團隊的內容,在剩下的章節中找到有用的知 代碼管理核心技術及實踐 下載 mobi epub pdf txt 電子書 格式
代碼管理核心技術及實踐 下載 mobi pdf epub txt 電子書 格式 2024
代碼管理核心技術及實踐 下載 mobi epub pdf 電子書活動購買,價格便宜,物流給力!
評分不錯的書,很具有學習的參考作用
評分書如其名,從零開始,不隻是javaweb,還有其他應用軟件的安裝,小白推薦
評分書幫朋友買的,聽說不錯,價格實惠,好評!
評分物流給力,概念講到,掃盲指引,通過該書在對每個部分去摸索實踐吧
評分內容不錯,推薦入手!!!
評分物流給力,概念講到,掃盲指引,通過該書在對每個部分去摸索實踐吧
評分學習佳品,值得購買。 開發工程師推薦
評分紙質不錯,內容有些少,基本就是一些主流框架的分析。有一定的學習價值。
代碼管理核心技術及實踐 mobi epub pdf txt 電子書 格式下載 2024