RCS 簡介

中央研究院計算中心

ASPAC 計劃

E-mail: aspac@phi.sinica.edu.tw
技術報告: 96007
November 27, 1996
Version: 1.1


版權聲明

1. Introduction

2. What RCS Can Do For Us?
3. How To Use RCS
A. The Instruction Set of RCS

B. Using Version Control with Makefile

C. The Emacs Enviorment For Version Control

1. Introduction

在程式的發展過程中, 需要經常重覆的做修改、暫存、測試等動作以期得到正確的結果, 而重覆修改、暫存的動作有時常會造成一些重要訊息的流失。 例如在編輯的過程中發生了錯誤( bug ), 而這個錯誤經過一段時間之後才發現, 若此時沒存下發展過程中一些重要的版本( rsvision )內容, 則不能獲得關於當初發展過程中的想法與做法, 常造成除錯時的困難。所以一般解決這個問題的辦法, 就是將每次修改的結果分以不同的檔案儲存起來, 藉此我們在發展檔案的過程中, 可以回頭找尋一些重要訊息或版本內容。 Version Control( VC )正是指發展文件檔案時, 檔案版本的儲存和管理的功能。而 RCS ( Revision Control System ) 正是提供 Version Control 環境的工具。

如果只把檔案各個階段版本的內容儲存下來, 則當檔案版本數增加時, 使用者將無法很快的辨識每個版本的內容, 所以除了內容的記錄之外, 做 VC 的目的還包括儘可能的將各版本有用的相關資訊記錄下來, 以辨識各別版本在發展過程中所代表的階段與內含的想法, 以及提高對儲存檔案版本的瞭解與利用。 這些包括: RCS 能讓使用者針對各個版本產生該版本的附記( log ), 此為使用者對該版本各別的描述, 使得使用者除了藉由檔名之外, 能依自己的描述很快的知道各個版本內容的特性。 為了除錯( debug )與發展上的方便, RCS 除了存下各版本內容與相關訊息以利除錯時參考, 也提供比較各版本間差異、以及將一些完成除錯的版本內容與其它檔案版本整合( merge )的功能。

RCS 幫助管理檔案生成的版本以及記錄版本的相關訊息, 所以可以利用在多人工作的環境中。 多人的工作環境包括一群人發展同一計劃的檔案群, 檔案間的相互關係可以藉由版本相關訊息的記錄來傳遞, 同時 RCS 支援一些多人工作環境下的需要, 包括可以設立檔案版本存取名單( access list ), 以及防止同時讀寫的 lock 功能。

在 VC 的編輯環境方面, 編輯軟體 emacs 有 version control 的功能。 emacs 可以選擇使用 RCS 或 SCCS( Source Code Control System )來做 version control。 RCS 大部份的功能都可以在 emacs 中達成。大體上使用 SCCS 或 RCS 在功能上是差不多的, 但 RCS 的指令集比較少、功能多一點, 在使用上比較方便。RCS 還有在持續的更新( update )它的功能, 而且可以說 RCS 是針對 SCCS 的缺點補強。

RCS 本身是處理單一檔案的版本儲存, 但軟體發展常是結合數個檔案, 要如何安排不同檔案間的關係與整合, 可藉由 make 的使用。 RCS 並不能自動的替使用者辨識或建立檔案之間的關係, 使用者可以利用 Makefile 來建立整體環境中相關檔案之間的關係與動作, 進而得到工作上的便利。另外 Emasc 中有提供 VC 的編輯環境, 能在編輯的環境下直接做 VC 的動作 。RCS 所支援的作業環境包括 UNIX 、OS/2 、DOS 、以及 WINDOW/NT , 在【參考資料】中可以查到各別的 ftp 位址。

以下將以介紹 RCS 的功能與使用的方法為主體, 說明如何利用 VC 的工作環境, 另外在附錄中有說明如何使用 Makefile 來整合工作環境以及 Emacs 中 VC 編輯環境的簡介。

2. What RCS Can Do For Us?

在寫程式的過程中會產生一些不被預期的錯誤( bug )而搞的焦頭爛額, 這些錯誤( bug )的產生可能是幾秒前的疏乎才造成的, 也可能是程式整體架構出了問題而老早就產生的。 從發現問題、找出錯誤一直到問題被解決的過程, 常是寫程式的過程中需要相當的技巧、耐心及費時的工作。

在整個除錯( debug )的過程中, 除了能透過一些除錯( debug )工具的使用來幫忙找出錯誤之外, 自己的記憶也是除錯時相當重要的參考, 但是當程式過於龐大或複雜時, 實在很難記住整個發展過程中所用到的想法與技巧, 所以整個程式發展過程中一些重要版本與想法的儲存將有利於除錯( debug )的進行。

RCS( Revision Control System )主要透過檔案版本內容與相關資訊的儲存, 使得檔案發展可以得到幫助。 RCS 對單一檔案的發展而言, 主要是提供一個容易建立 Check-Point 的環境, 幫助檔案除錯的進行。 對數個檔案的整體發展而言, 則是可產生 Snapshots 以建立不同檔案版本間的關係, 幫助不同檔案版本間的整合。 RCS 在適合多人工作方面, 主要支援可存取人員名單的建立與 lock 的功能。 以下將就支援檔案的發展與適合多人的工作環境兩方面來說明。

3. How To Use RCS

RCS ( Rivision Control System )是實做 Version Control 的工具, 主要藉由記錄檔案發展時, 各個階段版本的內容及相關資訊, 以記錄發展過程中的一些重要的想法與使用技巧。RCS 是針對各別的檔案產生其 archive file 將各版本存入。寫入 archive file 的時候並非將每個版本的所有內容存入, 而只存和上一版本的不同處, 並藉由寫入( check in ) 和讀出( check out ) 的動作來得到工作檔案( working file )。每個版本存入 archive file 時都會有產生一個版本序號( revision number )以區分各個版本, 爾後也利用這版本序號( revision number )來指定該版本的存取。 對於 RCS 的使用將分別以下列幾個主題來說明:

分別說明如下:

A. The Instruction Set of RCS

B. Using Version Control with Makefile

Version control 工作環境的優點是可以利用對不同版本的儲存, 來幫助程式或文件發展。對於工作流程可以用 Make 來簡化及管理。Make 的使用是透過 Makefile 的編寫, 安排各個工作程序中檔案的關係與巨集( marco )使用。 以下將以從介紹 Makefile 的功能與編寫評/font>始, 以發展 C 的程式 pf.c 為例子, 說明如何利用 make 來支援 version control 的工作環境。

C. The Emacs Enviorment For Version Control

Emacs 是有結合 Version Control( 以下以 VC 簡稱)的編輯器( Editer ), 能直接在編輯的環境下, 對編輯的檔案做 VC 的動作, 使得 VC 能與編輯環境結合, 簡化工作程序。在 emacs 中關於 VC 的編輯環境有下列幾個主要的特性:

分別說明如下: