我对项目中的许多文件进行了大量更改。每个提交(通常在文件级别)都附有对更改内容的评论。
有没有办法从 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 迁移了所有东西,所以我的记忆可能有点生疏。
如果您想在单个文件上获得快速结果,该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 中获取所有评论:
$ mkdir ~/repo $ cd ~/回购 $ mkdir 简历 $ cd 简历 $ scp -pr geek@avoid.cvs.org:/cvs/CVSROOT 。 $ mkdir -p 我的/最喜欢的 $ cd 我的/最喜欢的 $ scp -pr geek@avoid.cvs.org:/cvs/my/favorite/project 。 $ cd ~/回购 $ mkdir -p ~/repo/svn/my/favorite/project $ cvs2svn -s ~/repo/svn/my/favorite/project/src ~/repo/cvs/my/favorite/project/src $ mkdir ~/工作 $ cd ~/工作 $ svn checkout file:///home/geek/repo/svn/my/favorite/project/src/trunk ./src $ 光盘源 $ # 获取从第 5 版到今天的评论 $ svn log -r 5:HEAD $ # 获取从 2010-07-03 到今天的评论 $ svn log -r {2010-07-03}:HEAD
基本思想是只使用 svn 或 git 而不是 cvs :-) 这可以通过使用 cvs2svn 或 cvs2git 将 cvs 存储库转换为 svn 或 git 来完成,无论如何我们都应该这样做。它在大约三分钟内得到了我的答案,因为我有一个小存储库。
希望有帮助。
像这样的东西
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: |============|-------------"