2010年2月7日 星期日

RCS工具

下列為三個 RCS 中最重要的指令:

ci              將檔案放入 RCS 的控制下。
co              將檔案取出。
rcs              設定或是改變 RCS 檔案的參數。

有兩個可提供 RCS 檔案資訊的指令:

ident              RCS 檔案中取出關鍵字之值。
rlog              顯示某個 RCS 檔的改版概要說明。

要比較 RCS 檔可用下列指令:

merge              將兩個檔案的修改內容併入第三個檔 案。
rcsdiff              印出兩個版本之間的不同。
rcsmerge              將兩個 RCS 檔案中的修改內容併入第三個 RCS 檔案。

下列指令用來管理組態。不過因為這些指令非必要指令,所以有時不會安裝。

rcsclean              將未改變的工作檔案刪除。
rcsfreeze              將設定組態的檔案予以標記。             



基本操作方式

一般而言,RCS 檔案會放在 RCS 目錄中。所以第一步就是 :

mkdir RCS

接著,只要把所要放入 RCS 控制之下的檔案以以下指令加入即可:

ci file

這樣會在 RCS 目錄中產生一個叫做 file,v 的檔案。file,v 稱為 RCS 檔案。這個檔案內會儲存以後該檔案所有的更動資 料。第一次執行 ci 時,系統會要求輸入該檔案的描述。然後將檔案放入 RCS 檔中,然後將版號設定為 1.1

若要編輯新的版號,則用下列指令將檔案取出:

co -l file

這樣會使得 RCS 將檔案從 RCS 檔中取出來。使用者必須將檔案用 l 選項鎖定,這樣才能確定使用者可對該檔案進行讀寫。這個檔案稱為工作檔。每次完成編輯後可以 用 ci 指令 將檔案再送回 RCS 中:

ci file

這次,系統會提示使用者輸入所修改的紀錄,然後版號就設定為 1.2。注意將檔案送入 RCS後,通常工作檔就會刪除。若要取出唯讀的工作 檔,則不要加上 -l 選項來鎖定它:

co file

通常若要將檔案印出來或只是單純做搜尋或編譯用時,就可用這個指令取出檔案。若要直接取用 上一個 ci/co,則可用下列指令:

ci -u file

這樣會把檔案放入 RCS 中,然後立刻取出一份唯讀的工作檔案。要比較工 作檔案和 RCS 中最新版本的檔案,可用下列指令:

rcsdiff file

另一個有用的指令就是 rlog,可用來顯示記錄大綱。系統管理員可以用 rcs 指令來建立 RCS系統的預設行為。


一般 RCS 規格

本節討論重點如下:

. 關鍵字替代
. 版本編號
. 指定日期
. 指定狀態
. 標準選項和環境變數


-------------------------------------------------

關鍵字替代

RCS 可以將關鍵字變數放入工作檔案中。這些變數接著會展開成版本註記。使用者可將這些註記當作內含的註解,或是輸出時所印出的文字字串。 要從關鍵字替代來產生版本註記,請依下列步驟進行:

1. 在工作檔案中打入下列任一關鍵字。
2. 將檔案放入 RCS 中。
3. 將檔案再次取出。取出時,co 指令會將每個關鍵字展開成其對應的值。也就是說,co
會將:

  $keyword$

替代成
 
  $keyword:value$

4. 接下來的每次放入和取出的指令,都會將每個關鍵字 做更新的動作。除非指定其動作,否則新的值會取代原來的值。

注意:RCS 5 版中,許多指令都加入了 -k 選項,可在關鍵字替代上更有彈性。

關鍵字

$Author$              將版本放入 RCS 的使用者名稱。
$Date$              放入 RCS 時的日期與時間。
$Header$              檔案標頭,包括了 RCS 檔案的完整路徑、版本號碼、日期、作者、狀態(若鎖定時,還包括鎖定本檔案的使用者名 稱)。
$Id$              和$ Header$ 一樣,但不包括檔案的完整路徑。
$Locker$              鎖定本版本的使用者名稱。若檔案未鎖定,這個值就保持空白。
$Log$              這個訊息是在放入 RCS 時所打入的檔案描述。字串之前還加上了 RCS 檔名、版本號碼、作者和日期時間。記錄訊息會累 積而不會覆寫過去。
$RCSfile$              RCS 檔案的名稱,不包括其路徑。
$Rivision$              指定的版本號碼。
$Source$              RCS 檔案名稱,包括其路徑。
$State$              ci rcs 指令的 -s 選項所指定的狀態。

範例

先假設 /projects/new/chater3 這個檔案是由 daniel 這位使用者放入 RCS 後又取出的。下列為本檔案的第二個版本中所有的 關鍵字替代的值:

<<<<<<  code  >>>>>>

版本編號

若不指定時,RCS 會假設所使用的版本皆為最新的版本。 有些指令包括了 -r 選項可用來指定所要使用的版本號碼。也有些指令可以接受版本號碼作為參數。(這些指令在指令解說中,版本號碼會以 [R] 表示)版本號碼包括四個部分:releaselevelbranch sequence。(譯按:在此這些名詞不做翻譯,以免造成困 擾)但最常用的是 release level。比如,可用下列指令取出 1.4 版的檔案:

co -l -r1.4 ch01

在重新放入時,新的版本號碼就是 1.5 版。但若編輯的檔案放入時,要指定為下一個 release時,可使用下列指令:

ci -r2 ch01

這樣就會產生 2.1 版。還可以產生前期版本的 branch。下列指令會產生 1.4.1.1 版:

ci -r1.4.1 ch01

版本號碼不只可用號碼來表示。也可將字串設定為版本號碼(雖然這樣一樣稱為「號碼」),只要 透過 ci rcs 指令的 -n 選項即可。也可以將這個字串放入任何可接受版本 號碼當作參數的指令來使用。比如說,使用者可將所有的程式碼都用同一個標籤放入 RCS 中,而不管目前版本號碼為何:

ci -u -nPrototype *.c

另外,RCS 5.6 版中可以讓使用者指定 $,表示版本號碼將從工作檔案中的關鍵字取得。比 如:

rcsdiff -r$ ch01

這個指令會將 ch01 和放入 RCS 的那個版本做比較。也可以將符號和名稱結合。下 面的指令:

rcs -nDraft:$ ch*

會將檔案名稱加上一個字串。


-------------------------------------------------

指定日期

不同的版本會記錄存入 RCS 的時間和日期。有許多關鍵字字串包括了日期和時間。cicorlog 也有選項可接受時間和日期。RCS 預設使用下列的日期時間格式:

1995/10/16 02:00:00 (年 / / 日 時)

預設的時區為格林威治時間 GMT,也稱為 UTC。日期可以指定為任意格式。這樣就可以指定使用 多種不同的日期格式。下列為幾種常用的格式:

假設今天時間為(1995 年十月 16 日)

<<<<<<  code  >>>>>>

大寫或小寫的 lt 表示本地時間。第三行為 ctime 格式(加上 LT)。第四行是 date 指令的格式。

-------------------------------------------------

指定狀態

在一些狀況之下(尤其是程式設計的環境下),我們必須知道一些版本的狀態。 RCS 檔案有一個字串描述其狀態。預設的狀態為 Exp(實驗狀態)。其他包括了 Stab(stable) 或是 Rel(release)。這些字串通常是使用者自行定義的,對程式內部 來說並沒有意義。有些關鍵字字串在值中儲存其狀態。另外,cicorcs rlog 都可在選項中加上狀態作為參數。


-------------------------------------------------

標準選項

RCS 5.6 版定義了一個環境變數 RCSINIT,這個環境變數是用來設定 RCS 指令所使用的預設選項。若將 RCSINIT 設定為以空白隔開的選項列,則在使用任何 RCS 指令時,這些選項都會先加在使用者所指定的選項 之前。有三個常用的選項可放入 RCSINIT 中:-q-V -x。這些可視為是標準選項,因為大部分的 RCS 指令都可用這些選項。請注意,V RCS 5 版後才有,而 -x 則在 RCS 5.6 以後才有。

-q[R]              不輸出診斷訊息。R 指定檔案的版本號碼。
-Vn              模擬 RCS n 版。若要在不同系統之間交換檔案,則這個選項十分實用。n 之值可以是 34 5
-xsuffixes              指定不同的檔名後置字串。每個後置字串之間用「/」來分隔開。在UNIX作業系統中,RCS檔案名稱通常是以 「,v」 做結尾。而 -x 選項可以讓一些不能使用「,」字元作為檔名的系統也使用 RCS

比如,若要將工作檔案放入 RCS 系統中時:

ci -x,v/ ch01              (第二個後置字串為空白)

會以下列順序搜尋 RCS 檔:

RCS/ch01,v
ch01,v
RCS/ch01


-------------------------------------------------

SCCS 轉換指南

RCS 中有許多功能和 SCCS 中的指令相同。下面是一個很簡單的對照表:

SCCS              RCS
<<<<<>>>>> ------------------------------------------------- 指令解說 關於關鍵字的語法、版本號碼、日期、狀態和標準選項,請見前面的說明。 -------------------------------------- ci [options] files 將檔案放入 RCS 中。ci 會將指定的工作檔案 files 放入其對應的 RCS 檔案中。一般來說,ci會在檔案存入後將工作檔案刪除。若沒有 RCS 檔案,則工作檔就是第一個版本。這種情況下,會建立 RCS 檔案並提示使用者鍵入該檔案的說明。若有 RCS 檔案,ci 會將版本號碼更新,然後提示使用者輸入更動的紀 錄。 RCS 5.6 版中,若工作檔案沒有更動,則會恢復成上一個版本號碼。一些較舊的 RCS 中,最後可能要存入一個沒有更動過的新版本。 -u-l -r 三個選項一次只能使用一個。-u 選項會產生一個唯讀的工作檔,可以用作列印或是搜 尋、編譯等工作。-l 則先存入檔案後馬上取出檔案,並加以鎖定。這可以讓使用者更新版本,然後繼續編輯的動作。(比如長時間編輯時)-r 可以指定不同的 release 號碼。ci 可以接受標準的 -q-V -x 選項。 Options -d[date]              將目前存入的檔案日期標為 date,若不指定 date,則使用前次修改時的日期時間。 -f[R]              不管是否有更動都將檔案存入 RCS 中。 -I[R]              互動模式;不論輸入是否為終端機,都提示使用者輸入(比如在指令的 pipe 中)。-I RCS 5 版後才有。 -k[R]              利用檔案中的關鍵字設定版本號碼、產生日期、狀態和作者,而不經由環境變數取得。-k 在發展大型程式時,若要發表新的版本時十分實 用。用檔案內的關鍵字串就可以對檔案的屬性進行設定。 -l[R]              將檔案存入後執行 co -l。這樣會產生一份鎖定的工作檔案,版本號碼為下 一版。 -mmsg              msg 字串當作所有存入檔案的紀錄訊息。存入多個檔案 時,ci 詢問 是否重複使用上一個檔案的紀錄訊息。-m 選項則可跳過詢問過程。 -M[R]              設定工作檔案的修改時間為取出版本 的修改時間。-M 選項可能會造成 make 上的困擾,需小心使用。此功能在 RCS 5.6 以後才有。 -nname              name 設定為下一個版本號碼 -Nname              -n 一樣,但取代上一個 name -r[R]              將檔案以 R 為版本號碼存入。 -sstate              設定存入檔案的狀態。 -tfile              RCS 檔案的描述以 file 的內容代替。在 RCS 5 版中,只有在建立新的 RCS 檔案時可用。 -t-string              RCS 檔案描述以 string 字串代替。在 RCS 5 版中,只有在建立新的 RCS檔案時可用。 -u[R]              存入檔案後,執行 co -u。這樣會產生一個唯讀的工作檔案。 -wuser              將存入的檔案作者欄設定為 user 範例: 將每一個檔案用同一個記錄訊息存入:               ci -m'First round edits' chap* 存入 prog.c 的更動,然後保留一份唯讀的工作檔案。               ci -u prog.c 重新設定 level 2;將 2.1 版指定為 Prototype               ci -r2 -nPrototype prog.c -------------------------------------- co [options] files 取出之前放入 RCS 之檔案,並將檔案放入工作檔案中。若指定 -p 選項則輸出到標準輸出上。如果要編輯檔案後再存入,則要指定 -l 選項來鎖定這個檔案。co 可以接受標準選項 -q-V-x Options -ddate              取出 date 之前的最新版本。 -f[R]              強迫覆寫工作檔案。 -I[R]              互動模式;就算標準輸入不是終端機 也會提示使用者輸入。(RCS 第五版以後才有) -jR2:R3              rcsmerge 的功能一樣。R2 R3 所指定的兩個版本的改變會合併到第三個檔案中。第 三個檔案可以是工作檔案或是另一個版本號碼。(用其他選項指定的 R -kc              根據 c 旗標來展開關鍵字。c 之值可以為下列任一:               kv              將關鍵字展開為關鍵字和其值(預設)。只有在 ci -l 或是 co -l 才會插入鎖定檔案的使用者名稱。               kvl              kv 一樣,但加上鎖定檔案的使用者名稱。               k              將關鍵字展開,不加上其值。拿來比較檔案時,可用 來忽略一些細微的差異。               o              將關鍵字展開為前一版中所儲存的關 鍵字和其值。在一些二元檔中,若不允許字串改變時,就可用這個選項。               v              將關鍵字展開為其值,而不加上關鍵 字串。這樣以後的版本就無法在展開關鍵字了,不建議使用。 -l[R]              -r 一樣,但會將取出的檔案鎖定。 -M[R]              設定工作檔案的修改時間為取出版本 的修改時間。-M 選項可能會造成 make 上的困擾,需小心使用。此功能在 RCS 5.6 以後才有。 -p[R]              將取出的檔案送往標準輸出,不寫入檔案中。可用來做重導向或是 filter 用。 -r[R]              取出最新版本。若指定 R 的話,取出小於 R 的最新版本。 -sstate              設定存入檔案的狀態。 -u[R]              r 一樣,不過若之前鎖定過檔案,則會將檔案解除鎖 定。 -w[user]              取出由目前使用者或是指令中所指定 的 user 所存 入的版本。 範例: file 的最新版本加以排序:               co -p | sort 將所有大寫檔名的檔案都取出後鎖定以供編輯用:               co -l [A-Z]* 請注意,如果目前目錄內沒有工作檔案,則無法進行檔名展開。所以這個例子只有在之前執行過 ci -u 的 檔案才可使用。 最後,下列這些指令是用來取出某一組 RCS 檔案的工作檔案: co -r3 *,v                            release 3 的最新版本檔案。 co -r3 -wjim *,v              和上面一樣,但只取出由 jim 存入的檔案。 co -d'May 5, 2 pm LT' *,v              取出在這個日期之前所修改的最新版 本。 co -rPrototype *,v              Prototype 為名的最新版本。 -------------------------------------- ident [options] files 從檔案中取出關鍵字及其值。files 可以是文字檔、object 檔或是 dump 檔案。 Options -q              若沒找到關鍵字則不印出錯誤訊息。 範例: prog.c 已編譯過,且內含下列這行:   char rcsID[] = "$Author: george $ 則輸出如下: <<<<<<  code  >>>>>> 將所有 RCS 檔案中的關鍵字印出(不印出警告訊息)。               co -p RCS/*,v | ident -q -------------------------------------- merge [options] file1 file2 file3 利用 diff3 將三個檔案的內容作比較和合併。file2 是原來的檔案,file1 是正確的修改版,而 file3 是另一個修改版。merge 會將 file2 file3 的差異找出來,然後插入 file1 中。若 file1 file 同時有同樣的行,則 merge 會顯示警告訊息,然後把兩行都標明出來插入file1。插入資料如下: <<<<<<  code  >>>>>> 最後必須在 file1 之內選擇其一,將另一個刪除。merge 的傳回值可以是 0(無重複行)或是 1(有些重複行)或是 2(不明錯誤)。見 rcsmerge Options -L text1              將重複行中的 "<<<<<<改為 "<<<<<< -L text3              將重複行中的 "<<<<<<改為 "<<<<<< -p              將合併過的檔案送往標準輸出而非 file1 -q              對於重複行直接插入但不顯示警告訊息。 -------------------------------------- rcs [options] files 用來設定或改變 RCS 檔案的屬性或是預設性質。rcs 可用來設定強制鎖定(-L)、刪除版本(-o)、以及忽略 co 所設定的鎖定(-l -u)。RCS 檔案都有一個存取列表(用 -a 建立);任何在表內的使用者都可以執行 rcs。這個檔案通常是空白的,表示每個人都可以使用 rcs。另外,如果使用者就是 rcs 檔案的擁有者、特權使用者或是執行 rcs 時加上 -i 選項,就可以執行 rcsrcs 指令可以接受標準的選項 -q-V -x Options -ausers              users(以「,」分開)加到存取列表中。 -Aotherfile                            otherfile 的存取列表接在 files 的存取列表後。 -b[R]              將預設 branch 設定為 R。若不指定 R,則設定為目前版本中的最高 branch -c's'              $Log 關鍵字的註解字元設定為字串 s。預設狀況下,co 會將 $Log 關鍵字展開成由「#」開頭的註解行。可以將這個字串設定為 .\" troff 使用,或是設定為 * C 程式使用(你必須自行在$Log的前與後加上「/*」與「*/」)。 -e[users]              清除所有使用者,或是指清除由 users 指定的使用者。 -i              建立 RCS 檔但不放入版本號碼。 -I              互動模式;就算標準輸入不是終端機 也會提示使用者輸入。(RCS 第五版以後才有) -kc              c 當作預設的關鍵字展開方式。(c 之值請見 co 指令)-kkv 會恢復預設展開方式;其他的展開方式和第 4 版之前的都不相容。 -I[R]              將版本號碼 R 的檔案予以鎖定,或是鎖定最新版。若不小心用 co 而不是用 co -l取出檔案時,這個選項會自動將檔案鎖定。 -L              打開強迫鎖定(預設)。也就是說,不論任何使用者,都必須用 co -l 來鎖定檔案後才可以編輯該檔案。若要進行檔案分 享時,最好啟動強迫鎖定選項。 -mR:msg              將版本號碼 R 的紀錄訊息以 msg 字串代替。(RCS 5.6 之後才有) -nflags              加入或是刪除版本號碼和名稱之間的關連。flags 之值如下:                             name:R              name 和版本號碼 R 之間建立關連。                             name:              name 指定為最新版本。                             name              刪除 name 的關連。 -Nflags              -n 一樣,不過會覆寫目前的 name 設定。 -oR_list              R_list 中所列出的版本號碼檔案刪除。R_list 可指定為:R1, R1-R2, R1-或是 -R2。若加上 branch 號碼,則只會將這個 branch 上的最新版刪除。RCS5.6 以後將範圍分隔字元改為「:」,不過還是可以用「-」。 -sstate[:R]              將版本號碼 R 或是最新版的狀態設定為 state 字串。 -tfile              RCS 檔案的描述以 file 的內容代替。若不指定 file,則以標準輸出代替。 -t-string              RCS 檔案描述以 string 字串代替。 -u[R]              -l 的動作剛好相反。將之前用 co -l 取出的檔案予以解除鎖定。若是別人取出的檔案, 則用這個指令的使用者必須聲明其解鎖理由。這個理由會用電子郵件寄給原來鎖定檔案的使用者。 -U              設定為不強迫鎖定。除了檔案所有人 外,其他人都要用 co -l 才能編輯檔案。(見 -L 範例: To_customer 和所有最新版本的 RCS 檔案連結起來:               rcs -nTo_customer: RCS/* 將三個使用者加入 beatle_deals 的存取列表中:               rcs -ageorge,paul,ringo beatle_deals 1.2 1.5 版刪除:               rcs -o1.2-1.5 doc RCS 檔案的描述用變數內容來代替:               echo "$description" | rcs -t file -------------------------------------- rcsclean [options] [files] 雖然是 RCS 的一部份,但這個指令並非必要指令,所以有些系統上不會安裝這個指令。rcsclean 會將取出的檔案拿來和原來的 RCS 檔案的最新版本做比較(或是指定的版本號碼R)。若無差別,則將工作檔案刪除(用 rcsdiff 來找出其差異所在)。rcsclean 用於 makefile時相當好用。比如說,可以將整個目錄變為統一的 版本。執行 rcsfreeze 之前也可先執行rcsclean 來清除多餘的檔案。rcsclean 可接受標準選項 -q-V -x Options -kc              比較檔案時,將關鍵字以 c 方式展開。(見指令 co 有關 c 的說明)。 -n[R]              顯示指令執行結果,但不實際執行。 -r[R]              和版本號碼 R 的檔案作比較。R 可以是其他選項的參數,所以其實可以不用 -r 選項。 -u[R]              若指定的版本和工作檔案相同,則將該版本檔案解除鎖定。 範例: 將未改變過的程式和標頭檔刪除:               rcsclean *.c *.h -------------------------------------- rcsdiff [options] [diff_options] files diff 來比較兩個版本之間的差異。 用 -r 來指定版本,其形式如下: 指定的版本數               比較方式 ------------------------------------------                             將工作檔案和最新版本做比較。 一個                             將工作檔案和指定的版本做比較。 兩個                             將兩個版本做比較。 rcsdiff 接受標準的選項 -q-V -x。也可加上任何 diff 所使用的選項(diff_options)。rcsdiff 的傳回值可以是 0(無差別)、1(有差別)或是 2(不明錯誤)。 Options -kc              比較檔案時,將關鍵字以 c 方式展開。(見指令 co 有關 c 的說明)。 -rR1              R1 版本來做比較。 -rR2              R2 版本來做比較(必須指定 R1 才可再指定 R2)。 -------------------------------------- rcsfreeze [name] 這也是個非必要的指令,系統內可能不會安裝。rcsfreeze 會將整個存入的 RCS 檔指定一個名稱。通常用於將一整組檔案當作一個 組態使用時。預設的 name C_n, n 每次執行 rcsfreeze都會自動加 1 -------------------------------------- rcsmerge [options] file 將兩個檔案合併到第三個檔案(file 參數指定的檔案)中。必須指定一個或兩個版本來進 行合併。若有重複的部分,則和 merge 的處理方式相同。rcsmerge 接受標準的 -q-V -x選項。rcsmerge 的傳回值為 0(無重複)、1(有重複)或是 2(不明錯誤)。 Options -kc              比較檔案時,將關鍵字以 c 方式展開。(見指令 co 有關 c 的說明)。 -p[R]              將合併的檔案送往標準輸出,而不寫入檔案。 -r[R]              合併版本 R,若不指定 R,則將最新版本予以合併。 範例:   若要將舊版(1.3 版)的 prog.c 加入一些修改,但目前的檔案以到 1.6 版了。下面指令會將改變的部分併入 1.6 版中。 co -l prog.c (先修改最新版,將 1.3 版的修改部分加進去,然後:) rcsmerge -p -r1.3 -r1.6 prog.c > prog.updated.c 3.5 3.2 之間的修改恢復原狀,然後覆寫目前工作檔案:               rcsmerge -r3.5 -r3.2 chap08 -------------------------------------- rlog [options] files 顯示 RCS 檔案中的識別資料。包括每個版本的紀錄訊息、加入或刪除的行數和最後一次存入的日期等等。不加上options時,rlog 會顯示所有的資訊。你可以加上options來顯示特定的資訊。rlog接受標準的 -V -x 選項。 Options -b              精簡顯示資訊,僅印出有關預設 branch 的資訊。 -ddates              將存入時間在 dates 範圍內的版本資訊顯示出來。dates 以分號分隔。請注意要使用引號。每個日期可以下 列方式指定:               d1 < d2              指定從 d1 d2 之間的版本。               d1 <              指定 d1 之後的版本               d1 >              指定 d1 之前的版本。 -h              顯示一般 rlog 的開頭。 -l[users]              僅顯示鎖定的版本。若有指定users列表的話,則僅顯示users列表中的使用者所鎖定的版本資訊。 -L              未經鎖定的檔案不予以顯示。 -r[list]              顯示 list 所指定的版本號碼。list 所指定的版本號碼之間要以「,」分開。若不指定 list,則使用最新的版本。list 中的版本可以下列方式指定:               R1              指定 1 版本號碼。若 R1 branch,則選擇該 branch 上所有版本。               R1.              R1 branch,則僅顯示其最新版本。               R1-R2              R1 版到 R2 之間的版本。               -R1              branch 開頭到 R1 的版本。               R1-              R1 到該 branch 的最新版。               RCS 5.6 版中將範圍分隔字元改為「:」,不過「-」還是可以使用。 -R              只顯示該 RCS 檔案的名稱。 -sstatus              顯示符合 status 所指定的狀態的版本資訊。多個 status 之間用「,」分開。 -t              -h 一樣,但加上檔案的描述。 -w[users]              顯示由 users 列表內使用者所存入的版本資訊。users 列表以「,」隔開。若不指定 users,則預設為執行此指令的使用者。 範例: 顯示檔案的改版歷程:               rlog RCS/*,v | more 顯示 daniel 這個使用者所鎖定的 RCS 檔案名稱:               rlog -R -L -ldaniel RCS/* 顯示工作檔案的「標題」部分(不顯示改版歷 程):               rlog -t calc.c

沒有留言:

張貼留言

推到 Twitter!
推到 Plurk!
推到 Facebook!