LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 8857|回复: 9

CVS用后感,欢迎大家来补充

[复制链接]
发表于 2005-1-12 11:54:41 | 显示全部楼层 |阅读模式
CVS希望提供给用户的功能是尽可能完整且方便的记录项目的开发轨迹, 我只是个人使用了一段时间的CVS, 所以以下只是单用户的感受:

1. 什么时候需要commit in?
        使用CVS的目的是为了记录项目开发的功能性添加, 删除, 更新的轨迹.  即我们只有在_完成_了对项目的功能性的修改后才
        需要提交我们所做的修改.  而不是说我把修改提交到CVS库里面是因为怕丢失我今天或近几天所做的修改(实际上, 只要你的
        硬件不是水货中的极品, 在GNU系统上进行开发是完全不用为此*心的).
        举个例子: 我想为项目1修改功能X(包含了添加和删除).  期间需要修改文件A的函数foo(), 文件B的函数bar().
        我们不应该修改完foo()后就提交一次, 修改bar()后又提交一次.  而是应该等我们修改完foo() & bar(), make, debug, 觉得
        对X的功能修改满意后再commit in.  可能我在提交的时候会忘记对哪些文件做了哪些修改了, 但只要记得使用cvs status和
        cvs diff, 问题应该容易解决.  

2. commit log应该怎么写?
        初学者在commit in写log的时候往往是在项目根目录下进行commit in, 然后写本次修改的记录.  这样就会造成修改过的文件
        具有相同的日志记录, 从而带来两点不利之处: 没有针对性且日志记录很多, 不便于查看.
        所以我建议的方法是针对不同的修改, 写单独的log.  换句话说, 就是对单个文件或具有类似修改的某组文件分别提交,
        写不同的日志.
        在上面的例子中, 假如我们为功能X修改了文件A之函数foo(), A_1之foo(), A_2之foo(), A_3之foo(), B之bar(),
        我们提交的方法应该是cvs ci A A_1 A_2 A_3 && cvs ci B.
        如此一来, 我们将很难对功能X的修改进行全局性的把握, 因为文件A, A_1, B的revision编号很有可能是不一样的.
        解决这个问题的方法可以是使用ChangLog文件, GNU系统上面很多工具可以很方便的将CVS文件之log针对性的提取到ChangLog
        文档里面, 例如我们在上面可以使用cvs ci A A_1 A_2 A_3 && cvs ci B后再将刚刚输入的所有log信息复制到ChangLog内.
        所以通常情况下提交的最后一步是cvs ci -m"" ChangLog^-^  

3. 我是不是可以取出我的任意一次commit in?
        是的, 曾经有段时间一直认为只能取出打了标记的历史版本, 其实CVS为项目记录了每次commit in的动作, 用户可以通过
        revision内部编号取出任意某个文件的任意历史版本(e.g. cvs co -r1.3 src/server.c).
        在用户想放弃对某些文件至上提交以来的所有修改时, 再提取一次上次版本覆盖当前工作文件就行了, 不需要用户额外去备份.

4. 我是不是可以修改CVS库中以前的日志记录?
        是的, 可以通过cvs admin -m 1.2:"`cat newlog.txt`" server.c来对以前的log message进行更新.
        (这个命令找得我好苦!)

最后一点, 建议使用GNU Emacs进行项目开发却还在终端下使用CVS的用户看看VC(version control NOT Vi$ual C++)和PCL-CVS的使用手册, enjoy!
发表于 2005-1-14 11:29:19 | 显示全部楼层
好贴,受益非浅
回复 支持 反对

使用道具 举报

发表于 2005-1-20 20:34:19 | 显示全部楼层
我到现在还不知道怎么用cvs。。
回复 支持 反对

使用道具 举报

发表于 2005-12-8 15:36:49 | 显示全部楼层

怎么管理CVS的用户

怎么管理CVS的用户阿?比如添加一个用户到CVS用户列表,有没有什么命令直接加的?
回复 支持 反对

使用道具 举报

发表于 2005-12-8 21:32:05 | 显示全部楼层
一般cvs/svn的提交只有一个要求,能够通过编译。HEAD/TRUNK里面有bug是正常的。
回复 支持 反对

使用道具 举报

发表于 2005-12-9 10:28:34 | 显示全部楼层
现在好些大型站点都在转svn了
回复 支持 反对

使用道具 举报

发表于 2007-1-30 21:23:26 | 显示全部楼层
用eclipse提供的CVS客户端功能,已经非常的好用。
回复 支持 反对

使用道具 举报

发表于 2007-1-30 21:47:36 | 显示全部楼层
改用SVN之后,还是觉得SVN的管理方式更符合我的习惯。
回复 支持 反对

使用道具 举报

发表于 2007-1-31 12:18:13 | 显示全部楼层
SVN要好些
回复 支持 反对

使用道具 举报

发表于 2007-2-10 23:27:14 | 显示全部楼层
确实,现在都用svn了。cvs老了。提交的唯一要求也确实是能通过编译,svn鼓励以提交来备份源码。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表