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)

版本标签是符号化的版本号码,具有直观、易于记忆和管理的优点。用于阶段式(里程碑)的版本标记。是连接项目中不同文件不同版本的手段。

标签的设定

[Du_cloud@linux test]$ cvs tag rel_1_0_1 test.c

给test.c打上标签rel_1_0_1

 

注意:很少给单个文件设标签。

给目录下所有文件贴标签:(选中目录)

[Du_cloud@linux test]$ cvs tag baseline_1

 

删除:

[Du_cloud@linux test]$ cvs tag –d baseline_1

重命名:

[Du_cloud@linux test]$ cvs tag –r baseline_1 baseline_2

(先重命名再进行删除原标签)

[Du_cloud@linux test]$ cvs tag –d baseline_1

移动:

[Du_cloud@linux test]$ cvs tag –r 1.6 –F baseline_1 test.c

这里我们将test.c的标签从旧版本1.5移到新版本1.6上。

§  根据版本号码或版本标签获得

 [Du_cloud@linux test]$ cvs update –r 1.1 test.c

  获得某一版本标签的整个软件的源代码:

 [Du_cloud@linux test]$ cvs checkout –r baseline_1 test

或者跳转到某个版本标签的版本(已经有工作拷贝的情况下)

[Du_cloud@linux test]$ cvs update –r baseline_1

§  根据时间获得特定版本(更新到不晚于date的最新版本)

 [Du_cloud@linux test]$ cvs update –D “2002-05-08”


版本分支

[Du_cloud@linux test]$ cvs co –d test_new –r base_1 test

将标签base_1 下的文件checkout到 新建目录 test_new下

[Du_cloud@linux test_new]$ cvs tag –b New_Branch,

在标签base_1下建立分支New_Branch

[Du_cloud@linux test_new]$ cvs up –r New_Branch,(可以在分支中修改程序如:test.c) (进入分支New_Branch,进入之后可以在分支上修改文件) 1.1.2 变成1.1.2.1

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

[Du_cloud@linux test]$ cvs up –j base_1_brh(分支版本合并到主干版本中)

[Du_cloud@linux 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






你可能感兴趣的:(cvs回退与分支等)