跳轉到內容

版本控制

0% developed
來自華夏公益教科書

本文介紹了不同形式的版本控制。

版本控制的基本工具

[編輯 | 編輯原始碼]

什麼是版本控制?

[編輯 | 編輯原始碼]

以下來自維基百科的引用定義了版本控制

修訂控制(也稱為版本控制(系統)(VCS)原始碼控制(源)程式碼管理(SCM))是對同一資訊單元的多個修訂版本的管理。它最常用於工程和軟體開發,以管理數字文件(如應用程式原始碼、藝術資源(如藍圖或電子模型)和其他可能由團隊成員合作完成的專案)的持續開發。對這些文件的更改通常透過遞增關聯的數字或字母程式碼來標識,稱為“修訂號”、“修訂級別”或簡單地稱為“修訂版”,並在歷史上與進行更改的人員相關聯。例如,修訂控制的一種簡單形式將初始釋出的圖紙分配了修訂號“1”。當進行第一次更改時,修訂號將遞增到“2”,依此類推。

在本文字中將使用術語版本控制。

一個例子

[編輯 | 編輯原始碼]

本節將構建一個簡單的例子來說明版本控制的一些關鍵概念。

假設我們經營一家餐館,並且我們想列印一份選單。在營業的第一天,我們在一個名為 menu.txt 的檔案中建立了以下選單。

[Date]
Monday 5th January 2009

[Starters]
Starter of the day.

[Main]
Dish of the day.

----
FILE: menu.txt

第二天,我們添加了一些額外的專案。

[Date]
Tuseday 6th January 2009

[Starters]
Starter of the day.
Chicken Soup

[Main]
Dish of the day.
Mushroom Ommelette

----
FILE: menu.txt

在我們的檔案中,我們現在只記錄了我們使用的最後一份選單。如果我們沒有儲存任何選單的列印副本,我們將丟失 2009 年 1 月 5 日星期一的記錄。我們可以透過將每個選單儲存在單獨的檔案中來避免這種情況。

[Date]
Monday 5th January 2009

[Starters]
Starter of the day.

[Main]
Dish of the day.

----
FILE: menu-20090105.txt
[Date]
Tuseday 6th January 2009

[Starters]
Starter of the day.
Chicken Soup

[Main]
Dish of the day.
Mushroom Ommelette

----
FILE: menu-20090106.txt

TODO:關於檔名說明。

版本控制的型別

[編輯 | 編輯原始碼]
  • 集中式
  • 分散式

示例概述

[編輯 | 編輯原始碼]
  • 場景 1:單個使用者的單個檔案版本控制
  • 場景 2:單個使用者的多個檔案版本控制
  • 場景 3:單個使用者的多個檔案和分支版本控制
  • 場景 4:多個使用者的多個檔案版本控制
  • 場景 5:多個使用者的多個檔案和分支版本控制
  • 場景 6:多個使用者使用集中式版本控制
  • 場景 7:多個使用者使用分散式版本控制

場景 1:單個使用者的單個檔案版本控制

[編輯 | 編輯原始碼]

本場景將介紹版本控制的基本概念。它主要面向沒有版本控制經驗的人員。它將涵蓋差異(區別)、補丁、合併、專案的修訂以及有效使用版本控制的一些細微差別。

  • 示例使用餐廳選單。
  • 最初使用 GNU Diff Utils。
  • 保留 7 天的選單。
  • 在每一天之間建立一個補丁。
  • 向前和向後應用補丁。
  • 只保留最新的選單和反向補丁。
  • 比較大小。
[Date]
Monday 5th January 2009

[Starters]
Starter of the day.

[Main]
Dish of the day.

[Desserts]
Creme Brulee
[Date]
Tuseday 6th January 2009

[Starters]
Starter of the day.
Chicken Soup

[Main]
Dish of the day.

[Desserts]
Ice Cream
[Date]
Wednesday 7th January 2009

[Starters]
Starter of the day.

[Main]
Dish of the day.

[Desserts]
Creme Brulee
[Date]
Thursday 8th January 2009

[Starters]
Chicken Soup
Starter of the day.

[Main]
Dish of the day.

[Desserts]
Ice Cream
menu-20090105.txt menu-20090106.txt menu-20090107.txt menu-20090108.txt
[Date]
Friday 9th January 2009

[Starters]
Starter of the day.

[Main]
Dish of the day.
Fish and Chips

[Desserts]
Apple Pie
[Date]
Saturday 10th January 2009

[Starters]
Starter of the day.
Chicken Soup

[Main]
Dish of the day.
[Date]
Sunday 11th January 2009

[Starters]
Starter of the day.
Prawn Cocktail

[Main]
Roast Lunch

[Desserts]
Ice Cream
Apple Pie
Cheese and Biscuits
menu-20090109.txt menu-20090110.txt menu-20090111.txt

GNU diffutils

[編輯 | 編輯原始碼]

“GNU diffutils”包是一組完整的程式,用於處理檔案組之間的差異以及合併檔案。GNU diffutils 包包含以下實用程式

  • diff - 顯示兩個檔案之間的差異
  • cmp 比較二進位制檔案
  • sdiff 互動式地合併兩個檔案
  • diff3 顯示三個檔案之間的差異
  • patch 將差異應用於現有檔案

使用 diff (Ubuntu)

[編輯 | 編輯原始碼]

使用 diff (Windows XP)

[編輯 | 編輯原始碼]

我們將首先檢視週一選單和週二選單之間的差異。

~Menus>diff menu-20090105.txt menu-20090106.txt
2c2
< Monday 5th January 2009
---
> Tuesday 6th January 2009
5a6
> Chicken Soup
11c12
< Creme Brulee
---
> Ice Cream

~Menus>

diff 顯示有三個更改,2c2, 5a611c12. 更改的摘要以 <number><alpha><number> 的形式顯示。

~Menus>diff menu-20090106.txt menu-20090107.txt
2c2
< Tuesday 6th January 2009
---
> Wednesday 7th January 2009
6d5
< Chicken Soup
12c11
< Ice Cream
---
> Creme Brulee

~Menus>

場景 2:單個使用者的多個檔案版本控制

[編輯 | 編輯原始碼]

白噪聲

[編輯 | 編輯原始碼]

版本控制中的白噪聲是指對版本控制下的檔案進行更改,這些更改顯示為更改,但不會更改檔案的“語義”。 白噪聲最常見於“重新組織”空白時,例如當用空格替換製表符時。 白噪聲是一個問題,因為它通常需要審查實際上沒有改變的檔案的差異。

場景 3:單個使用者的多個檔案和分支版本控制

[編輯 | 編輯原始碼]

場景 4:多個使用者的多個檔案版本控制

[編輯 | 編輯原始碼]

場景 5:多個使用者的多個檔案和分支版本控制

[編輯 | 編輯原始碼]

場景 6:多個使用者使用集中式版本控制

[編輯 | 編輯原始碼]

場景 7:多個使用者使用分散式版本控制

[編輯 | 編輯原始碼]

SourceAnywhere

[編輯 | 編輯原始碼]

Dynamsoft SourceAnywhere 是一款基於 SQL Server 的版本控制軟體,旨在替代/替代 Microsoft Visual SourceSafe (VSS)。

提供獨立版和託管版: http://www.dynamsoft.com/Products/version-control-source-control-sourceanywhere.aspx

SourceAnywhere 獨立版

[編輯 | 編輯原始碼]

Dynamsoft SourceAnywhere 獨立版是一款基於 SQL 的原始碼控制軟體,旨在替代/替代 Microsoft Visual SourceSafe (VSS)。 它適用於準備從 Microsoft Visual SourceSafe (VSS) 原始碼控制遷移的開發人員,以提高效能、安全性、可擴充套件性和可靠性。

安裝指南

下載 30 天試用版

SourceAnywhere 託管版

[編輯 | 編輯原始碼]

SourceAnywhere 託管的線上原始碼控制是一款基於 SQL 的原始碼控制軟體,作為 SaaS 應用程式提供,它提供 Microsoft Visual SourceSafe (VSS) 的所有主要功能,以及更多功能。 SourceAnywhere 託管的線上原始碼控制託管在 Bell 資料中心,以確保您對關鍵任務資料的訪問最可靠,並擁有無與倫比的安全性。

保護您的原始碼

介紹影片

註冊 免費託管計劃並試用

SCM Anywhere

[編輯 | 編輯原始碼]

Dynamsoft SCM Anywhere 是一款基於 SQL Server 的軟體配置管理 (SCM) 工具,具有完全整合的版本控制、錯誤跟蹤和構建自動化功能。 它適合尋求整合解決方案來管理整個軟體開發生命週期的團隊。

SCM Anywhere 獨立版

[編輯 | 編輯原始碼]

Dynamsoft SCM Anywhere 獨立版是基於 SQL 的軟體配置管理 (SCM) 解決方案,具有完全整合的版本控制、問題跟蹤和構建自動化功能。

SCM Anywhere 獨立版專為集中式和分散式開發團隊設計,幫助開發團隊更快地交付軟體產品,並透過集中控制原始碼檔案、團隊活動、工作項狀態和錯誤報告來促進團隊協作。

安裝指南

概述影片

免費試用

SCM Anywhere 託管版

[編輯 | 編輯原始碼]

SCM Anywhere 託管版是全球首款託管 SCM(軟體配置管理)解決方案。 它作為 SaaS 應用程式提供,並附帶完全整合的版本控制、問題跟蹤、構建自動化和專業服務,以管理您的整個軟體開發生命週期。 SCM Anywhere 託管版託管在 Bell 資料中心,以確保您對關鍵任務資料的訪問最可靠,並擁有無與倫比的安全性。

保護您的原始碼和數字資產

註冊 免費計劃並試用

參考資料

[編輯 | 編輯原始碼]

使用 GNU diff 和 Patch 比較和合並檔案。 David MacKenzie、Paul Eggert、Richard Stallman,網路理論有限公司

華夏公益教科書