版本控制筆記

1、什麼是版本控制。

(1)定義:

版本控制主要用於存儲,追蹤目標(文件夾)和文件的修改歷史,確保不一樣的人所編輯的同一文檔都獲得更新,版本控制透過文檔控制記錄程序各個模塊的改動,併爲每次改動編寫上序號,大大提升了開發效率。數據庫

(2)相關係統:

1.軟件系統的版本控制是指能夠自行運行的各子系統的版本控制服務器

2.軟件系統的版本號有測評人員肯定,由測評人員進行版本控制工做。數據結構

3.軟件系統的版本號由三部分構成:主版本號+次版本號+修改號。主版本號1位 ,當系統在結構和功能上有重大突破改進後纔會發生變化;次版本號兩位,修改號8位,採用提交時的日期,當系統進行任何修改後,包括數據結構發生變化,修改號都要隨之改變。例如:Ver2.21.20171001分佈式

4.各子系統的版本號獨立spa

5.各軟件系統應該顯示詳細版本號的功能,例如help菜單下的about功能。系統提交存檔時測評服務要進行版本號檢查。版本控制

6.新系統卡法完成,或已存檔的系統進行修改,修改完成後,進行提交存檔時,由測評小組系統分析工程師肯定的版本號,或更改版本號。資源

7.軟件系統產生新的版本後,老版本是否繼續保存問題解決以下:開發

a.老版本的系統若是還有客戶在使用,在客戶升級之前,必須繼續保持文檔

b.老版本的系統已經沒有客戶使用了,而且新版本的系統已經把老系統的文檔完整的升級,這樣能夠刪除或覆蓋老版本系統資源。get

c.對於要刪除或覆蓋的老版本軟件,能夠統一備份。

二,各類版本控制

(1)本地版本控制

許多人習慣用複製整個項目目錄的方式保存不一樣的版本。

優勢:簡單粗暴。

缺點:易混淆,易丟失。

爲了解決這個問題,因而開發了許多種本地版本控制系統(大多采用某種簡單的數據庫記錄文件的歷次更新差別)如rcs...工做原理基本上就是保存並管理文件補丁(patch),文件補丁是一種特定格式的文本文件,記錄對應文件修改先後的內容變化。因此根據每次修訂的補丁,計算出各個版本的文件內容。

(2)集中化版本控制

爲了提升工做效率,方便不一樣系統上的開發者系統工做,集中化版本控制出現了。如CVS,Subversion以及Perforce等,都有一個單一的集中管理的服務器,保存全部文件的修訂版本。標準作法就是:協同工做的人都經過客戶端鏈接到這臺服務器,取出新的文件或者提交更新。如圖2.1

優勢:相對本地CVS來講,每一個人均可以看到項目其餘人正在作什麼(透明),管理員掌握開發者的權限,

而且管理一個CVCS要遠比在多個客戶端維護本地數據庫要輕鬆得多。

缺點:太過於依賴中央服務器,若是出現中央服務器的單點故障,那麼誰都沒法協同工做。若是沒作備份或備份不及時的化,還可能出現數據丟失的風險。最壞可能丟失整個項目的全部歷史記錄(如中央服務器硬盤壞了)。客戶端取出來的多是快照數據,不能保證全部人的數據都提取出來。

(3)分佈式版本控制

            

出於以上兩種可能出現問題,分佈式誕生了。如Git,Mercurial,Bazzar等,客戶端不僅是提取最新版本的文件快照,而是把原始的代碼倉庫完整的鏡像下來。這樣,任何一處協同工做的服務器發生故障,均可以用任何一個鏡像出來的本地倉庫恢復,由於每一次的提取都是對代碼倉庫的完整備份,使得風險大大下降。

更好的是,許多這類系統均可以和若干不一樣的遠程代碼倉庫進行交互。可讓同一個項目中的開發人員更好的創建協做,根據須要設定不一樣的協做流程,大大提升了開發效率和管理的方便。

三:版本控制術語

存儲庫:具備受版本控制的全部文件的完整修訂歷史的共享數據庫。

簽入文件或目錄:將工做目錄做爲新版本複製回存儲庫。

簽出文件或目錄:從存儲庫中將文件的最新版本複製到工做空間,簽出目錄時,將牽出該目錄下的全部文件和子目錄。

提交文件或目錄:與簽入文件或目錄相同,用戶提交更改,對各自工做文件副本作了修改,並將更改的文件提交到存儲庫。

衝突:當多位開發人員對同一文件放工做副本進行更改,並將修改文件提交到存儲庫時,他們的工做可能發生衝突。CVS或Subversion或Git會檢測衝突並要求某我的先解決該衝突,而後再提交他們的更改。

合併:將對相同文件的不一樣工做副本進行的多個更改合併到資源存儲庫中,合併是一種管理衝突的策略,容許多名開發人員同時工做(沒必要對文件上鎖),而後將他們的工做併入一個組合版本中。當對同一文件的不一樣行進行兩組更改時,合併這兩組更改很容易,而合併操做也可正常進行。但對文件的同一行或幾行進行更改時,將發生衝突,這就要求有人手動編輯該文件進行統一,而後才能將這些更改爲功提交到資源存儲庫。

解決:當兩名開發人員試圖提交發生衝突的更改,而形成文件內的衝突時,必須經過手動編輯該文件進行處理。必須有人逐行檢查該文件,以接受一組更改並刪除另外一組更改,除非衝突解決,不然存在衝突的文件沒法成功提交到資源庫中。

修訂版本:對各個文件進行具體更新的編號草案,每次編輯文件並將文件提交到存儲庫時,該文件的修訂版本號將會增長。

版本:用於標識文件集的編號方案,可在某個時間點標記並命名這些文件集。

工做空間:要在本地硬盤或Unix用戶帳戶上編輯的文件副本,在工做空間中編輯文件時,這些文件將再也不與存儲庫同步,這就是進度,而後須要將更改返回存儲庫,方便他人能夠看到這些修改。

get√   感謝互動百科。。

相關文章
相關標籤/搜索