網頁

2015年8月11日 星期二

[RCS] Linux Version Control Tool

 

RCS (Revision Control System) 是 Linux 上的一個簡單的 Version Control 工具, 和其他的 Version Control 工具來比, 它的功能簡單, 沒有分散式版本管理能力. 但是因為它簡單, 所以如果是單機或單人作業, 它還是很好用的. 以下用一個簡單的例子來解釋.

安裝

$ sudo apt-get install rcs

設定

其實不需要設定. 不過 rcs 有一個特別的地方, 如果 source code 的目錄裡面, 有 RCS 這個目錄, 它會把它的檔案都放在這裡面. 這樣 source code 的目錄看起來就乾淨多了.

$ mkdir RCS

預備

既然是版本管理, 那當然就要有 source code, 這邊用一個很簡單的 print Hello World 的 c 程式做例子.

test.c :

image 

啟始

所謂的啟始, 只是把 source code 加入 RCS 的控管.

$ rcs –i test.c

然後, 這個檔案就會被加到 RCS.

image

rcs 會要求輸入一些說明, 這在後續參考時會有幫助. 譬如說修改那一個 bug, 加入那些功能.  

Check In

Version Control 的最重要兩個動作就是 check in/check out. check in 表示將版本送進version control 控管,check out 則是從 version control 取出版本.

$ ci test.c

image

check in 之後, rcs 會同時刪除目前的檔案.

Check Out

Cehck out 有兩種狀況,

第一個, 只是拿出來看看.

$ co test.c

image

check out 出來的檔案, RCS 會把它的屬性改成唯讀.

第二個, 拿出來修改.

$ co –l test.c

image

-l 是 lock 的意思, 這時候只有 check out 的人, 也就是檔案的擁有人可以修改. 同時, RCS 管理的檔案中, 這一個被 check out 的檔案, 也不能再鎖定, 進行修改.

check out 並鎖定之後, 就來修改看看, 隨便加入個訊息

image

然後 check in, 並加入一些說明.

image

查看修改歷程

software 就是一連串的修改過程, version control 需要知道這些過程:

$ rlog test.c

image

rlog 列出的第一段, 是 RCS 的一些設定資訊. 接下來是由近到遠的修改記錄, 這邊可以看到有兩個版本 1.1 是 Initial version, 1.2  是 add message

查看版本差異

$ rcsdiff –r1.1 –r1.2 test.c

image

這邊可以看到, 兩個版本的差異只是一行 printf

將版本號置入原始碼

RCS 可以將版本資訊代入程式碼中, 只要加上 $Id$

image 

check in 之後, 再 check out 出來看, $Id$ 已經展開成版本資訊.

image

這部份的版本資訊會隨著版本持續修改, 自動更新.

GNU make

GNU make 會自動尋找 RCS 中的檔案, 並且 check out 出來編譯.

$ make test

image

這邊可以看到, 目錄中只有 RCS 這個子目錄, 下 make 這個命令之後, make 自動取出 test.c, 編譯, 並且刪除暫存檔. 最後只剩下 test 這個執行檔. 這個感覺真的不錯.

沒有留言:

張貼留言

請提供您寶貴的意見