我对项目中的多个文件进行了大量修改。每个提交(通常在文件级别)都附有更改内容的注释。
是否有一种方法可以从CVS获取自上次标记版本以来更改的这些注释列表?
如果可以通过eclipse CVS插件完成,那就更好了。
更新: 我很想接受一个答案,但不幸的是,没有一个答案符合我的要求。坦白地说,我认为这实际上是不可能的,这真是令人遗憾,因为这可能是创建版本之间变更列表的好方法(假设所有提交都以合理的粒度进行,并包含有意义的注释)。
我对项目中的多个文件进行了大量修改。每个提交(通常在文件级别)都附有更改内容的注释。
是否有一种方法可以从CVS获取自上次标记版本以来更改的这些注释列表?
如果可以通过eclipse CVS插件完成,那就更好了。
更新: 我很想接受一个答案,但不幸的是,没有一个答案符合我的要求。坦白地说,我认为这实际上是不可能的,这真是令人遗憾,因为这可能是创建版本之间变更列表的好方法(假设所有提交都以合理的粒度进行,并包含有意义的注释)。
我认为
cvs -q log -SN -rtag1:::tag2
或者
cvs -q log -SN -dfromdate<todate
将会按照您的要求执行。这将列出两个标签或日期之间所有更改的版本和注释,仅限于已更改的文件。在标记情况下,三个冒号排除了第一个标记的注释。有关更多信息,请参见cvs -H
日志。
关于cvs log命令的选项可以在这里找到。具体来说,要获取自特定标签(我们称之为VERSION_1_0)以来的所有提交。
cvs log -rVERSION_1_0:
如果你想快速得到单个文件的结果,cvs log
命令是不错的选择。如果你需要更全面的工具,我发现一个名为 cvs2cl.pl 的 perl 脚本非常好用。它可以生成多种不同格式的变更列表。虽然它有许多不同的选项,但我使用的是类似这样的标签到标签的选项:
cvs2cl.pl --delta dev_release_1_2_3:dev_release_1_6_8
或者
cvs2cl.pl --delta dev_release_1_2_3:HEAD
我也使用同一工具进行了日期比较。
类似这样的
。cvs -q log -NS -rVERSION_3_0::HEAD
在处理输出内容时,您可能需要使用egrep过滤掉不需要的内容。我经常使用以下命令:
cvs -q log -NS -rVERSION_3_0::HEAD | egrep -v "RCS file: |revision |date:|Working file:|head:|branch:|locks:|access list:|keyword substitution:|total revisions: |============|-------------"
我知道你已经“解决”了你的问题,但我也遇到了同样的问题,以下是我如何快速从给定的版本开始获取所有cvs注释直到最新版本:
$ mkdir ~/repo $ cd ~/repo $ mkdir cvs $ cd cvs $ scp -pr geek@avoid.cvs.org:/cvs/CVSROOT . $ mkdir -p my/favorite $ cd my/favorite $ scp -pr geek@avoid.cvs.org:/cvs/my/favorite/project . $ cd ~/repo $ mkdir -p ~/repo/svn/my/favorite/project $ cvs2svn -s ~/repo/svn/my/favorite/project/src ~/repo/cvs/my/favorite/project/src $ mkdir ~/work $ cd ~/work $ svn checkout file:///home/geek/repo/svn/my/favorite/project/src/trunk ./src $ cd src $ # 获取从第5个版本到今天的注释 $ svn log -r 5:HEAD $ # 获取从2010-07-03到今天的注释 $ svn log -r {2010-07-03}:HEAD
基本思路是使用svn或git代替cvs :-) 这可以通过使用cvs2svn或cvs2git将cvs repo转换为svn或git来完成,我们应该这样做。如果你的仓库很小,这个过程大约需要三分钟左右就能得到答案。
希望对你有所帮助。