版本控制的概念與實務

42
版版版版版版版版

Upload: dplayerd

Post on 19-Feb-2017

69 views

Category:

Software


0 download

TRANSCRIPT

版控的概念與實務

Who am IASP.NET 程式員

目前擔任架構設計

毛豆 ( 是肥宅 )

救火救火再救火

蝦米是版控 古早味作法 版控有什麼特性

本日目標

開始前

記得當時年紀小話說在純純 ( 蠢蠢 ?) 的古早時代

小時候,偶然間看到的神器

這件事你我都幹過

優點:◦ 好輕鬆,超便利

來吧!複製貼上

既然有問題,下一招

優點:◦ 所有修改都在相同檔案了◦ 查得到歷史紀錄

註解很好用

也不方便,再來

優點:◦ 冗餘註解消失了◦ 有做壓縮,檔案很小

把整個資料夾 ZIP 及備份

方法還在找

可是不小心就長大了…

然後就找到工作了

大家一起 Coding 叫做協同作業 協同作業,同步程式碼

◦ 用網路芳鄰◦ 用 FTP ◦ 用 DropBox

好歐,充滿了現代智慧及新潮科技 ( 簡直高大上啊 )

到了公司,同事說

同事問:「嘿!我寫的程式被誰蓋掉了…」◦ ( 不是我不是我 )

檔案找不到了,明明有上傳啊!!

但到了第三週…

小小結論

來談談版控

維基如是說

持續的追蹤過程 跨使用者同步 是工法,也是系統

重點是 ?

持續性 差異比對 多人協作 版本滾回 修改紀錄及訊息紀錄

版本控制系統特性

就是台伺服器 儲存檔案的新版本還有歷史資料的地方檔案庫

Source:CVS for Windows 簡易安裝指南蔡煥麟

從檔案庫◦ 放入程式碼 ( 要寫描述哦 )◦ 取出程式碼

簽入 / 簽出

Source:http://chimera.labs.oreilly.com/books/1234000001574/ch02.html

檔案只記載差異 版號自動加一 ?

簽入的重點在

版號自動加一 ?

同步所有人的檔案,避免不同 版本變化的追蹤 開發者的備份 ?

簽入的重點在

水的三態汽態

液態固態

版控檔案的四態未受控 已受控

已修改衝突

加入改程式改程式

簽入討論細節合併、簽入

版本衝突

簽入時,新版蓋舊版 但多人改一份時 ?

◦ 版控系統可以自動合併◦ 但總會發生它不懂的

手動查原因,並解決之◦ ( 記得是解決問題,不是解決同事 )

衝突 ?

版本編號是沒意義的◦ 3001 版 & 3289 版 & 5327 版

真正有用的◦ 有意義的標籤,如 Ver 1.0.1 、 1.5.3 、耶誕特別版 等

Tag

每個檔案的每項變動 隨時滾回舊版

◦ 2401 => 2387 從舊版跑到最新版

◦ 2387 => 2401

版本追蹤和比對

Source:https://www.oxygenxml.com/xml_editor/subversion_client.html

把檔案庫切成主幹、枝葉 主幹和枝葉可以分開修改 最後再合併

◦ (這裡極需要人力,記得不要解決同事哦 )

分支 & 合併

知名版本控制 免費軟體 ( 都有免費平台可以用 ):

– CVS– SVN– GIT

付費軟體 :– Microsoft VSTS

版控系統的種類

中央管理式& 分散式

中央管理式由統一伺服器集中管理

◦ 檔案庫、訊息、 LOG◦ 使用者和存取權限◦分支在伺服器

重點在保持多人同步◦ 合併策略或加解鎖策略

把檔案庫下載到本機端◦ 每個單機都擁有檔案庫◦分支在本機端

重點不在同步而是個別版本◦ 對本機端簽入、滾回舊版、分支◦ 最後再考慮同步到中央庫

分散式

版控和工法

版控定義:◦ 持續性追蹤,並能比對差異

只能管理檔案嗎 ?◦企業內部還有很多事該做吧 ?◦ 寫程式、分析需求、會議、測試、部署、和客戶吵架

版控 = 程式碼管理 ?

老方法:◦打開 IDE ,取得新版檔案,編譯◦執行功能,點這點那…

如果加入版控…呢 ?

& 測試

老方法:◦承上,把編譯結果檔保存下來◦ 放到客戶端 / 伺服器◦ 如果三百台就拷貝三百次 ?

如果使用版控…呢 ?

& 部署

團隊人數 & 平台選擇◦分散式、中央管理式

團隊策略制訂◦ 加解鎖 / 分支合併◦ 描述寫法◦哪些要被版控 ?

檔案、文件、編譯結果、需求書、會議 (吵架 ) 紀錄

版控策略

END