バージョン管理 (英語: ) は、エンジニアリング ブループリントを保守するための標準的な方法であり、エンジニアリング ブループリントの作成から完成までのプロセスを追跡できます。

バージョン管理

バージョン管理(英語: ) は、エンジニアリング ブループリントを保守するための標準的な方法であり、エンジニアリング ブループリントの作成から完成までのプロセスを追跡できます。さらに、バージョン管理は、ソフトウェア開発プロセス中に、異なる人が編集した同じプログラム ファイルが確実に同期されるようにするソフトウェア エンジニアリング手法でもあります。

ソフトウェア開発
コアアクション
パラダイムとパターン
方法論とフレームワーク
支持的な行動
練習する
道具
標準と知識システム

概要

ドキュメント管理 () を通じて、エンジニアリング プロジェクトの各モジュールの変更プロセスを記録し、各変更をシリアル化することができます。

バージョン管理の簡単な形式は次のとおりです。図の最初のバージョンにバージョン グレード「A」を割り当てます。最初の変更が行われると、バージョン グレードが「B」に変更され、以降同様に続きます。最も単純な例は、初期バージョンが「1」に指定され、変更が行われるとバージョン番号が「2」に増加するというものです。

このように、バージョン管理は、プロジェクトの設計者に、設計を以前の状態に復元するオプションを提供できます。このオプションは、設計プロセスが行き詰まった場合に特に重要です。

理論的には、すべての情報レコードをバージョン管理に追加できます。これまでの実践では、ソフトウェア開発プロセスを除けば、より複雑なバージョン管理技術やツールが他の分野で使用されることはほとんどありませんでした(多くの利点をもたらす可能性はありますが)。現在、当初手動で行われていた従来のバージョン管理を補うために、バージョン管理ソフトウェアを使用してCAD電子ファイルや回路基板設計を管理し始めている人もいます。

ソフトウェアのバージョン管理

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

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

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

軟體版本的控制方法

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

差分編碼

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

中央式系統與分散式系統

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

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

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

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

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

檔案上鎖

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

其他功能

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

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

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

术语

基线()

基线是软件文档或源码(或其它产出物)的一个稳定版本,它是进一步开发的基础。

檔案庫()

存储檔案的新版本還有歷史資料的地方,通常是在伺服器上。有時候也叫(像是在SVK、AccuRev還有Perforce中)

工作複本()

從檔案庫中取出一個本地端(客户端)的複製,針對一個特定的時間或是版本。所有在檔案庫中的檔案更動,都是從一個工作版本中修改而來的,這也是這名稱的由來。觀念上,這是一個沙盒。

提交()

將本地端的修改送回檔案庫。(由版本控制軟體處理「跟上次更動相比,哪個檔案又被更動」的事)

變更()

對一份文件作的特定更動。

變更記錄()

取出()

從檔案庫取出檔案到本地端(客户端)。

更新()

將檔案庫的修改送到本地端(與提交相反)

合併()

合併各個改變。

版次()

一個或指的是一系列版本變遷的其中之一。

匯入()

匯出()

衝突()

當兩方更動同一份文件會發生衝突。

著名的版本控制軟體

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

參看

注释

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

外部連結

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.

おすすめ

転載: blog.csdn.net/weixin_40191861/article/details/133076174