fbpx
维基百科

版本控制

版本控制(英語:Version control)是维护工程藍圖的标准做法,能追蹤工程藍图從诞生一直到定案的過程。此外,版本控制也是一種軟體工程技巧,藉此能在軟體開發的過程中,確保由不同人所編輯的同一程式檔案都得到同步。

概述 编辑

透過文档控制(documentation control),能記錄任何工程專案內各個模組的改動歷程,並為每次改動編上序號。

一种简单的版本控制形式如下:赋给图的初版一个版本等级“A”。当做了第一次改变后,版本等级改为“B”,以此类推。最簡單的例子是,最初的版本指定為“1”,當做了改變之後,版本編號增加為“2”,以此類推。

藉此,版本控制能提供專案的設計者,將設計恢復到之前任一狀態的選擇權,這種選擇權在設計過程進入死胡同時特別重要。

理論上所有的資訊记錄都可以加上版本控制,在過去的實務中,除了軟體開發的流程,其它的領域中很少有使用較複雜的版本控制技巧與工具。目前已有人開始用版本控制軟體來管理CAD電子檔案,電路板設計,來補足本來由人手工執行的傳統版本控制。

软件版本控制 编辑

软件工程师常利用版本控制來跟踪、维护源代码、檔案以及配置文件等的改动。

有時候,一个程序同時存有两个以上的版本有其必要性,例如:发布版本中程序错误已經被修正,但沒有加入新功能;而开发版本則有新的功能正在开发、也有新的错误待解決,于是便需要同时维护两个不同的版本。

此外,为了找出只存在于某一特定版本中的程序错误、或找出程序错误出現的版本,开发人员也必須通过比对不同版本的源代码以找出问题的位置。

軟體版本的控制方法 编辑

在最簡單的情況下,軟體設計師可以自己保留一個程式的許多不同版本,並且為它們做適當的編號。這種簡單的方法已被用在很多大型的軟體專案中。該方法雖然可行,但不夠有效率。除了必須同時維護很多幾乎一樣的源碼備份外;而且極度依賴軟體設計師的自我修養與開發紀律,但這卻常是導致錯誤發生的原因。因此,有人開發出了將部份或全部版本控制工作自動化的版本控制系統。

差分編碼 编辑

大部份的版本控制軟體採用差分編碼:只保留檔案相繼版本之間的差異,這個方法可以更有效的儲存數個版本的檔案。

中央式系統與分散式系統 编辑

大部分的軟體開發案,會有好幾個開發人員同時工作。如果兩個人員同時要改變同一個檔案,而沒有管理存取權限,很可能會覆寫彼此的工作。

所以權限管理控制系統會在兩種方法中擇一解決:採用中央式系統,由中央權威管理存取權限;或是像分散式系統容許多個單位同時進行,包括同時更動同一檔案。

傳統上版本控制系統都是採用中央式系統:所有版本控制的工作在一個伺服器進行,由中央權威管理存取權限「鎖上」檔案庫中的檔案,一次只讓一個開發者工作。

2000年後,TeamWareBitKeeper、和GNU開始用分散式版本控制系統:開發者直接在各自的本地檔案庫工作,並容許多個開發者同時更動同一檔案,而各個檔案庫有另一個合併各個改變的功能。這個方式讓開發者能不靠網路也能繼續工作,也讓開發者有充分的版本控制能力,而不需經中央權威許可。分散式系統仍然可以有檔案上鎖功能。

分散式系統Linux內核的發明人林納斯·托瓦茲就是分散式版本控制系統的支持者,他开发了目前被开源社群广泛使用的分散式版本控制系統Git

檔案上鎖 编辑

檔案上鎖功能能對高難度的合併(例如大幅更改大檔案或檔案群的許多部份)提供一些保護,但其他開發者仍然可以繞過版本控制系統改變檔案(這本身就是很大的問題)。所以檔案上鎖功能帶來的功效與副作用一直飽受爭議。

其他功能 编辑

有些進步的版本控制工具提供更多功能,例如:

  1. 管理誰能改變程式的哪個部位,
  2. 提供某一個人控制權來審查哪些改變可以過關;
  3. 與開發環境整合。

維基百科用的MediaWiki也有版本控制的功能。

术语 编辑

基线(Baseline
基线是软件檔案或源码(或其它产出物)的一个稳定版本,它是进一步开发的基础。[1]
儲存庫(Repository
存储檔案的新版本還有歷史資料的地方,通常是在伺服器上。有時候也叫Depot(像是在SVK、AccuRev還有Perforce中)
工作複本(Working copy
從檔案庫中取出一個用戶端的複製,針對一個特定的時間或是版本。所有在檔案庫中的檔案更動,都是從一個工作版本中修改而來的,這也是這名稱的由來。觀念上,這是一個沙盒。
提交(Commit
將用戶端的修改送回檔案庫。(由版本控制軟體處理「跟上次更動相比,哪個檔案又被更動」的事)
變更(Change
對一份檔案作的特定更動。
變更記錄(Change List
取出(Check-Out
從檔案庫取出檔案到用戶端。
更新(Update
將檔案庫的修改送到用戶端(與提交相反)
合併(Merge / Integration
合併各個改變。
版次(Revision
一個revisionversion指的是一系列版本變遷的其中之一。
匯入(Import
匯出(Export
衝突(Conflict
當兩方更動同一份文件會發生衝突。

著名的版本控制軟體 编辑

注:多数不提供中文语言界面包(一部分本身即基于命令行接口),一部分对中文没有有很好的支持,处理中文时有乱码。但一般选用支持UNICODE的软件时,CJK便不成问题。

參看 编辑

注释 编辑

  1. ^ . [2008-08-19]. (原始内容存档于2008-09-07). 

外部連結 编辑

    版本控制, 此條目需要編修, 以確保文法, 用詞, 语气, 格式, 標點等使用恰当, 2020年11月11日, 請按照校對指引, 幫助编辑這個條目, 幫助, 討論, 英語, version, control, 是维护工程藍圖的标准做法, 能追蹤工程藍图從诞生一直到定案的過程, 此外, 也是一種軟體工程技巧, 藉此能在軟體開發的過程中, 確保由不同人所編輯的同一程式檔案都得到同步, 目录, 概述, 软件, 軟體版本的控制方法, 差分編碼, 中央式系統與分散式系統, 檔案上鎖, 其他功能, 术语, 著名的軟體, 參看,. 此條目需要編修 以確保文法 用詞 语气 格式 標點等使用恰当 2020年11月11日 請按照校對指引 幫助编辑這個條目 幫助 討論 版本控制 英語 Version control 是维护工程藍圖的标准做法 能追蹤工程藍图從诞生一直到定案的過程 此外 版本控制也是一種軟體工程技巧 藉此能在軟體開發的過程中 確保由不同人所編輯的同一程式檔案都得到同步 目录 1 概述 2 软件版本控制 2 1 軟體版本的控制方法 2 1 1 差分編碼 2 1 2 中央式系統與分散式系統 2 1 3 檔案上鎖 2 1 4 其他功能 2 2 术语 3 著名的版本控制軟體 4 參看 5 注释 6 外部連結概述 编辑透過文档控制 documentation control 能記錄任何工程專案內各個模組的改動歷程 並為每次改動編上序號 一种简单的版本控制形式如下 赋给图的初版一个版本等级 A 当做了第一次改变后 版本等级改为 B 以此类推 最簡單的例子是 最初的版本指定為 1 當做了改變之後 版本編號增加為 2 以此類推 藉此 版本控制能提供專案的設計者 將設計恢復到之前任一狀態的選擇權 這種選擇權在設計過程進入死胡同時特別重要 理論上所有的資訊记錄都可以加上版本控制 在過去的實務中 除了軟體開發的流程 其它的領域中很少有使用較複雜的版本控制技巧與工具 目前已有人開始用版本控制軟體來管理CAD電子檔案 電路板設計 來補足本來由人手工執行的傳統版本控制 软件版本控制 编辑软件工程师常利用版本控制來跟踪 维护源代码 檔案以及配置文件等的改动 有時候 一个程序同時存有两个以上的版本有其必要性 例如 发布版本中程序错误已經被修正 但沒有加入新功能 而开发版本則有新的功能正在开发 也有新的错误待解決 于是便需要同时维护两个不同的版本 此外 为了找出只存在于某一特定版本中的程序错误 或找出程序错误出現的版本 开发人员也必須通过比对不同版本的源代码以找出问题的位置 軟體版本的控制方法 编辑 在最簡單的情況下 軟體設計師可以自己保留一個程式的許多不同版本 並且為它們做適當的編號 這種簡單的方法已被用在很多大型的軟體專案中 該方法雖然可行 但不夠有效率 除了必須同時維護很多幾乎一樣的源碼備份外 而且極度依賴軟體設計師的自我修養與開發紀律 但這卻常是導致錯誤發生的原因 因此 有人開發出了將部份或全部版本控制工作自動化的版本控制系統 差分編碼 编辑 大部份的版本控制軟體採用差分編碼 只保留檔案相繼版本之間的差異 這個方法可以更有效的儲存數個版本的檔案 中央式系統與分散式系統 编辑 大部分的軟體開發案 會有好幾個開發人員同時工作 如果兩個人員同時要改變同一個檔案 而沒有管理存取權限 很可能會覆寫彼此的工作 所以權限管理控制系統會在兩種方法中擇一解決 採用中央式系統 由中央權威管理存取權限 或是像分散式系統容許多個單位同時進行 包括同時更動同一檔案 傳統上版本控制系統都是採用中央式系統 所有版本控制的工作在一個伺服器進行 由中央權威管理存取權限 鎖上 檔案庫中的檔案 一次只讓一個開發者工作 2000年後 TeamWare BitKeeper 和GNU開始用分散式版本控制系統 開發者直接在各自的本地檔案庫工作 並容許多個開發者同時更動同一檔案 而各個檔案庫有另一個合併各個改變的功能 這個方式讓開發者能不靠網路也能繼續工作 也讓開發者有充分的版本控制能力 而不需經中央權威許可 分散式系統仍然可以有檔案上鎖功能 分散式系統Linux內核的發明人林納斯 托瓦茲就是分散式版本控制系統的支持者 他开发了目前被开源社群广泛使用的分散式版本控制系統Git 檔案上鎖 编辑 檔案上鎖功能能對高難度的合併 例如大幅更改大檔案或檔案群的許多部份 提供一些保護 但其他開發者仍然可以繞過版本控制系統改變檔案 這本身就是很大的問題 所以檔案上鎖功能帶來的功效與副作用一直飽受爭議 其他功能 编辑 有些進步的版本控制工具提供更多功能 例如 管理誰能改變程式的哪個部位 提供某一個人控制權來審查哪些改變可以過關 與開發環境整合 維基百科用的MediaWiki也有版本控制的功能 术语 编辑 此章节需要扩充 基线 Baseline 基线是软件檔案或源码 或其它产出物 的一个稳定版本 它是进一步开发的基础 1 儲存庫 Repository 存储檔案的新版本還有歷史資料的地方 通常是在伺服器上 有時候也叫Depot 像是在SVK AccuRev還有Perforce中 工作複本 Working copy 從檔案庫中取出一個用戶端的複製 針對一個特定的時間或是版本 所有在檔案庫中的檔案更動 都是從一個工作版本中修改而來的 這也是這名稱的由來 觀念上 這是一個沙盒 提交 Commit 將用戶端的修改送回檔案庫 由版本控制軟體處理 跟上次更動相比 哪個檔案又被更動 的事 變更 Change 對一份檔案作的特定更動 變更記錄 Change List 取出 Check Out 從檔案庫取出檔案到用戶端 更新 Update 將檔案庫的修改送到用戶端 與提交相反 合併 Merge Integration 合併各個改變 版次 Revision 一個revision 或version 指的是一系列版本變遷的其中之一 匯入 Import 匯出 Export 衝突 Conflict 當兩方更動同一份文件會發生衝突 著名的版本控制軟體 编辑BitKeeper CVS Concurrent Versions System Micorosoft Visual SourceSafe Team Foundation Server Visual Studio Online Perforce Rational ClearCase 修订控制系统 GNU Revision Control System Serena Dimention Subversion SVK Git Monotone 軟體 GNU Bazaar Mercurial SourceGear Vault 英语 SourceGear Vault 注 多数不提供中文语言界面包 一部分本身即基于命令行接口 一部分对中文没有有很好的支持 处理中文时有乱码 但一般选用支持UNICODE的软件时 CJK便不成问题 參看 编辑 nbsp 计算机程序设计主题 软件配置管理 MEE 英语 MEE 计算机支持的协同工作 協作版本系統 版本控制軟件列表 List of revision control software 英语 List of revision control software Software version 相關資訊 形態管理 Configuration management 原始碼 neutral build RevML http public perforce com public revml index html SyncML WebDAV注释 编辑 基线 2008 08 19 原始内容存档于2008 09 07 外部連結 编辑The Configuration Management Yellow Pages 取自 https zh wikipedia org w index php title 版本控制 amp oldid 78806567, 维基百科,wiki,书籍,书籍,图书馆,

    文章

    ,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。