1. 程式人生 > >cvs回退與分支等

cvs回退與分支等

9.版本回退(取出以前的某個版本)
有兩種方式:
一是隻把某一版本的檔案輸出到標準輸出上: 
$cvs up –p –r <版本號> <filename>

“-p”選項讓CVS命令的結果只輸出到標準輸出,而不寫入到結果檔案中。

另一種是將輸出到標準輸出的結果重定向到檔案中: 
$cvs up –p –r <版本號> <filename> > <filename>

如:目前abc.c檔案的版本號為1.5,要取出1.2的版本,那麼執行 
$cvs up –p –r 1.2 abc.c > abc.c

若沒有使用“-p”選項進行回退,而是使用了$cvs up –r 1.2 abc.c命令,之後若對1.2版本進行修改後再提交到CVS時,會出現如下提示資訊: 
cvs ci

cvs commit: Examining .

cvs commit: sticky tag `1.2' for file `abc.c' is not a branch

cvs [commit aborted]: correct above errors first!

解決辦法兩種方式: 
I、修改CVS/Entries檔案,將以下黃色標記部分刪除即可。 
$cd CVS

$ vi E*

/abc.c/1.2/Tue Dec 17 13:33:06 2002//T1.2

D

~

~

II、使用$cvs up –A abc.c命令來消除附著標籤,但是該命令是將1.2版本與最新版本進行了合併,還需對abc.c進行修改再重新提交。


版本標籤(tag)

版本標籤是符號化的版本號碼,具有直觀、易於記憶和管理的優點。用於階段式(里程碑)的版本標記。是連線專案中不同檔案不同版本的手段。

標籤的設定

[[email protected] test]$ cvs tag rel_1_0_1 test.c

給test.c打上標籤rel_1_0_1

注意:很少給單個檔案設標籤。

給目錄下所有檔案貼標籤:(選中目錄)

[[email protected] test]$ cvs tag baseline_1

刪除:

[[email protected] test]$ cvs tag –d baseline_1

重新命名:

[[email protected] test]$ cvs tag –r baseline_1 baseline_2

(先重新命名再進行刪除原標籤)

[[email protected] test]$ cvs tag –d baseline_1

移動:

[[email protected] test]$ cvs tag –r 1.6 –F baseline_1 test.c

這裡我們將test.c的標籤從舊版本1.5移到新版本1.6上。

§  根據版本號碼或版本標籤獲得

 [[email protected] test]$ cvs update –r 1.1 test.c

  獲得某一版本標籤的整個軟體的原始碼:

 [[email protected] test]$ cvs checkout –r baseline_1 test

或者跳轉到某個版本標籤的版本(已經有工作拷貝的情況下)

[[email protected] test]$ cvs update –r baseline_1

§  根據時間獲得特定版本(更新到不晚於date的最新版本)

 [[email protected] test]$ cvs update –D “2002-05-08”

版本分支

[[email protected] test]$ cvs co –d test_new –r base_1 test

將標籤base_1 下的檔案checkout到 新建目錄 test_new下

[[email protected] test_new]$ cvs tag –b New_Branch,

在標籤base_1下建立分支New_Branch

[[email protected] test_new]$ cvs up –r New_Branch,(可以在分支中修改程式如:test.c) (進入分支New_Branch,進入之後可以在分支上修改檔案) 1.1.2 變成1.1.2.1

[[email protected] test_new]$ cvs ci –m “fixed bug no 111” test.c(提交到分支上)

[[email protected] test]$ cvs up –j base_1_brh(分支版本合併到主幹版本中)

[[email protected] test]$ cvs ci –m “merged from branch:base_1_brh”

remove命令

刪除檔案

your_client$ cvs remove –f  oldfile

your_client$ cvs commit –m “removed” oldfile

刪除資料夾

因為cvs不對目錄進行版本控制,所以和刪除檔案不同,沒有一個專門的命令。例如(要刪除目錄olddir):

your_client$ ls -a

olddir  test.c test1.c test.pc

your_client$ cd olddir

your_client$ ls –a

tmp.c tmp1.c

以下是刪除目錄olddir的命令:

your_client$ cvs remove –f  tmp.c tmp1.c

Your_client$cvs commit –m “removed”  tmp.c tmp1.c

your_client$ cd ..

your_client$ cvs update –P  (更新, -P 告知 cvs update將空目錄由庫存中刪除)

your_client$ cvs  update(所有空目錄均從工作目錄中刪除)

這時目錄olddir從工作目錄中消失(注意前提是將olddir中的檔案全部刪除)

注意:此命令不會將庫中新新增的目錄取到工作目錄中,可執行命令:your_client$ cvs update -d