0

修改CVS库中以前的日志记录

Posted in CVS at 六月 29th, 2010 / No Comments »

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

——————————————————————————–

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!

http://www.linuxsir.org/bbs/showthread.php?t=170538

Published in CVS
Tags:

No Responses to “修改CVS库中以前的日志记录”

Leave a Reply

请输入算式结果(看不清请点击图片)
(必须)