我对项目中的许多文件进行了一些更改。每次提交(通常在文件级别)都附有对更改内容的评论。
有没有办法从上一个标记版本的变化中获取这些评论的CVS列表?
如果我可以通过eclipse CVS插件执行此操作,那就获得奖励。
更新:我想在这里接受一个答案,但不幸的是,没有一个答案是我正在寻找的。坦率地说,我认为它实际上是可能的,这真的很可惜,因为这可能是在版本之间创建更改列表的一种很好的方式(假设所有提交都是以合理的粒度进行并包含有意义的注释)。
答案 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: |============|-------------"