fxzeng

ruby && watir

统计

留言簿(2)

阅读排行榜

评论排行榜

cvs 命令 [转载]

原作者:weiqiong#g.com
首发于
www.linuxmine.com

1. 导入一个源代码库:
源代码库在目录/home/weiqiong/project,其下有文件test.c和test.h
shell>cd /home/weiqiong/project
shell>cvs import -m "test project" test(需要导入的项目名) weiqiong(开发商信息) start(版本信息)

2. 获得第一份工作copy
shell>cd /home/weiqiong
shell>cvs checkout test
则目录/home/weiqiong/test中就会有test.c和test.h两个文件

3. 检查工作拷贝(-Q为去除无关的提示文字)
shell>cvs -Q update(将cvs上的更新下载到本地)
shell>cvs -Q diff -c(比较cvs上和本地的代码的不同)
如果希望查看某一特定文件的变化,在最后加上文件名

4. 浏览记录信息
shell>cvs log test.c

5. 查看两个版本的不同之处:
shell>cvs diff -c -r 1.3 -r 1.4 test.c

6. 恢复旧版本:如果当前最新版本为1.4,而你想将其恢复到1.3版本,重新建立一个新版本1.5
shell>cvs -Q update -p -r 1.3 hello.c > hello.c
(如果没有-p,表示检验出1.3版本,但是会sticky;加上-p,将1.3版本打到标准输出中,且没有sticky,此处覆盖hello.c文件)
shell>cvs update hello.c
(可选,但是一般ci之前都要update一次)
shell>cvs ci -m "reverted to 1.3 code" hello.c
或者
shell>cvs update -j 1.4 -j 1.3 hello.c
(将1.4->1.3的差异,应用到当前版本上)
shell>cvs update hello.c
(可选,但是一般ci之前都要update一次)
shell>cvs ci -m "reverted to 1.3 code" hello.c

如果是目录
在你需要恢复的目录下
cvs tag TAG_R1_0_0_2
cvs update -j TAG_R1_0_0_2 -j TAG_R1_0_0_1
cvs update
cvs ci -m "restore to R1_0_0_1"
或者
在你需要恢复的目录的上一级目录中
cvs export -d project_name.old -r TAG_R1_0_0_1 project_name
cp -rf project_name.old/* project_name/
rm -rf project_name.old
cvs update
cvs ci -m "restore to R1_0_0_1"

请注意,内容是恢复到了TAG_R1_0_0_1,但是版本一直在增加。

7. 增加文件
vi newfile
cvs add newfile(若为二进制文件则用cvs add -kb readme.doc)
cvs ci -m "add newfile" newfile

8. 删除文件
rm newfile.c
cvs remove newfile.c
cvs ci -m "removed newfile.c" newfile.c

9. 增加目录
mkdir newdir
cvs add newdir

10. 要增加带有多级目录和文件的子目录,方法是导入一个目录
比如原项目叫abc,在abc目录下想增加一个带有多级目录和文件的目录jni,
cd jni
cvs import -m "new dir jni" abc/jni weiqiongimport R1_0_0_0
然后,客户端(自己和其他人的客户端)需要
cvs update -d 获取最新的目录更新

11. 删除目录
先删除目录下的所有文件,然后
cvs update -P 从工作copy中删除空目录,但是源代码库依然保留着空目录
如果需要更新工作copy的目录与源代码库完全一致(主要是包括空目录),需要
cvs update -d

如果不需要恢复,应该
到服务器上rm -rf删除该目录
在客户端,rm -rf删除该目录,然后在该目录的同级CVS目录下,修改Entries文件,删除带有该目录名的一行

12. 导出不带CVS目录的源文件,export只能针对一个TAG或者日期导出,空目录不会被导出:
cvs export -r release1 project_name
cvs export -D 20021023 project_name
cvs export -D now project_name
cvs export和cvs co module的区别在于export不生成CVS目录,也不导出空目录,用于作发布

13. 确认版本里程碑
cvs tag release_1_0

14. 开始一个新的里程碑,标记所有文件开始进入2.x的开发
cvs commit -m "make all release 2.0" -r 2.0
cvs up -A

15. 版本分支的建立
在开发项目的2.x版本的时候发现1.x有问题,但2.x又不敢用,
则从先前标记的里程碑:release_1_0导出一个分支release_1_0patch
cvs rtag -b -r release_1_0 release_1_0patch projname

一些人先在另外一个目录下导出release_1_0patch这个分支:解决1.0中的紧急问题,
cvs checkout -r release_1_0patch
而其他人员仍旧在项目的主干分支2.x上开发

在release_1_0patch上修正错误后,标记一个1.0的错误修正版本号
cvs tag release_1_0patch_1
如果2.0认为这些错误修改在2.0里也需要,也可以在2.0的开发目录下合并release_1_0patch_1
中的修改到当前代码中:
cvs update -j release_1_0patch_1
(将release_1_0patch->update -j release_1_0patch_1的改变,merge到当前的版本中)

16.修改某个版本注释:
每次只确认一个文件到CVS库里是一个很好的习惯,但难免有时候忘了指定文件名,
把多个文件以同样注释commit到CVS库里了,以下命令可以允许你修改某个文件某个版本的注释:
cvs admin -m 1.3:"write some comments here" file_name
修改从1.2->1.3checkin时的注释

17.在注释中可以加入以下宏,cvs会自动将其替换为相应的项
$Id$ $Header$ $Author$ $Date$ $Revision$ $Log$ $Source$ $Name$

18.查看当前各文件的状态,包括文件的当前编辑版本号,源代码库版本号,文件的状态
cvs status filename

19.粘着选项
cvs update -D "1999-04-09"
删除粘着,回到当前最新版本
cvs update -A

posted on 2006-09-19 20:26 Fxzeng's space 阅读(446) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。