自上次标记版本以来,如何从CVS获取提交注释列表?

时间:2008-10-31 06:21:41

标签: version-control cvs

我对项目中的许多文件进行了一些更改。每次提交(通常在文件级别)都附有对更改内容的评论。

有没有办法从上一个标记版本的变化中获取这些评论的CVS列表?

如果我可以通过eclipse CVS插件执行此操作,那就获得奖励。

更新:我想在这里接受一个答案,但不幸的是,没有一个答案是我正在寻找的。坦率地说,我认为它实际上是可能的,这真的很可惜,因为这可能是在版本之间创建更改列表的一种很好的方式(假设所有提交都是以合理的粒度进行并包含有意义的注释)。

5 个答案:

答案 0 :(得分:8)

我认为

cvs -q log -SN -rtag1:::tag2 

 cvs -q log -SN -dfromdate<todate  

会做你想要的。这将列出两个标记或日期之间所做的所有更改的所有版本和注释,仅适用于已更改的文件。在标记的情况下,三个冒号排除第一个标记的注释。有关详细信息,请参阅cvs -H日志。

答案 1 :(得分:5)

cvs log命令的选项可用here。具体来说,要获取自特定标记以来的所有提交(让我们称之为VERSION_1_0)

cvs log -rVERSION_1_0:

如果您的目标是让命令工作而不必知道最后一个标记的名称,我相信您需要编写一个抓取当前分支日志的脚本,解析查找标记,然后发布问题针对该标签的log命令,但是我很久以前就将所有内容从CVS中迁移出来,所以我的记忆可能会有点生疏。

答案 2 :(得分:5)

如果要在单个文件上获得快速结果,cvs log命令就可以了。如果你想要更全面的东西,我发现的最好的工具是名为cvs2cl.pl的perl脚本。这可以生成几种不同格式的更改列表。它有许多不同的选项,但我使用了这样的tag-to-tag选项:

cvs2cl.pl --delta dev_release_1_2_3:dev_release_1_6_8

cvs2cl.pl --delta dev_release_1_2_3:HEAD

我还使用相同工具对日期进行了比较。

答案 3 :(得分:3)

我知道你已经“解决”了你的问题,但我遇到了同样的问题,这就是我如何从给定的版本中快速获得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
$ # get the comments made from revision 5 until today
$ svn log -r 5:HEAD
$ # get the comments made from 2010-07-03 until today
$ svn log -r {2010-07-03}:HEAD

基本的想法是只使用svn或git而不是cvs :-) 这可以通过使用cvs2svn或cvs2git将cvs repo转换为svn或git来完成,无论如何我们应该这样做。它在大约三分钟内得到了我的回答,因为我有一个小存储库。

希望有所帮助。

答案 4 :(得分:3)

像这样的东西

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: |============|-------------"