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

17

我对项目中的多个文件进行了大量修改。每个提交(通常在文件级别)都附有更改内容的注释。

是否有一种方法可以从CVS获取自上次标记版本以来更改的这些注释列表?

如果可以通过eclipse CVS插件完成,那就更好了。

更新: 我很想接受一个答案,但不幸的是,没有一个答案符合我的要求。坦白地说,我认为这实际上是不可能的,这真是令人遗憾,因为这可能是创建版本之间变更列表的好方法(假设所有提交都以合理的粒度进行,并包含有意义的注释)。

5个回答

8

我认为

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

或者

 cvs -q log -SN -dfromdate<todate  

将会按照您的要求执行。这将列出两个标签或日期之间所有更改的版本和注释,仅限于已更改的文件。在标记情况下,三个冒号排除了第一个标记的注释。有关更多信息,请参见cvs -H日志。


1
这确实回答了问题。我正在使用rlog。我发现两个冒号可行,而不是三个冒号。同时保留标签可能也很有用(因此省略-N选项)。所以:'cvs -q rlog -S -rtag1::tag2'或'cvs -q rlog -S -rtaglast::'。 - gaoithe

5

关于cvs log命令的选项可以在这里找到。具体来说,要获取自特定标签(我们称之为VERSION_1_0)以来的所有提交。

cvs log -rVERSION_1_0:

如果您的目标是创建一个无需知道上一标签名称即可运行的命令,我认为您需要编写一个脚本以获取当前分支的日志,然后解析以查找标签,最后针对该标签发出日志命令。不过,我已经将所有内容迁移到了 CVS 之外,所以我的记忆可能有点生疏。

1
嗯,看起来“-r”表示文件修订号,而不是特定标签。 - Ron Tuffin
至少我的CVS打印标签、作者和日期……但不包括注释。 - Stroboskop
1
HEAD是最新版本的别名,如果您没有明确地标记代码的最新版本。 - Nate

5

如果你想快速得到单个文件的结果,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

我也使用同一工具进行了日期比较。


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

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
$ # 获取从第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来完成,我们应该这样做。如果你的仓库很小,这个过程大约需要三分钟左右就能得到答案。

希望对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接