8

有一个遗留 CVS 存储库,其中包含大量目录、子目录和路径。还有大量分支和标签不一定涵盖所有路径和文件 - 通常是一个子集。我怎样才能找出,哪些分支/标签覆盖,哪些文件和路径?

CVS 日志已经提供了每个文件的标签列表。该任务要求我将其转换为每个标签的文件。我在当前的 WinCVS (CVSNT) 实现中找不到这样的功能。给定足够的空周期,我可以编写一个 Perl 脚本来执行此操作,该算法并不复杂,但需要完成。

我想有些人需要这些信息并解决了这个问题。因此,我认为应该是一个现成的(开源/免费)工具。

4

6 回答 6

11

要列出文件上的标签,还可以执行以下操作:

cvs status -v <file>
于 2009-06-23T21:10:36.143 回答
7

要确定哪些标签适用于特定文件,请使用:

cvs log <filename>

这将输出文件的所有版本以及已将哪些标签应用于该版本。

要确定单个标签中包含哪些文件,我唯一能想到的就是使用标签检查并查看返回的文件。为此的命令是:

cvs update -r <tagname>
cvs co <modulename> -r <tagname>
cvs export <modulename> -r <tagname>
于 2008-08-29T18:27:33.553 回答
4

上面引用的方法对我不起作用

cvs -q rdiff -s -D 2000-01-01 -r yourTagName

但是经过大量的捣乱后,我意识到

cvs -q rdiff -s -D 2000-01-01 -r yourTagName ModuleName

作品

于 2010-11-08T19:01:28.430 回答
3

您不必进行实际结帐。你可以使用 -n 选项来模拟这个:

cvs -n co -rTagName ModuleName

这将为您提供模块 ModuleName 中所有标记为 TagName 的文件的名称。

于 2008-11-06T09:53:32.380 回答
1

以下命令给出了该标签“yourTagName”中的文件列表。这些文件都被标记为新的,“yourTagName”中的修订信息。

此命令在 2000-01-01 和您的标签之间进行区分,请随意使用更早的另一个日期。

cvs -q rdiff -s -D 2000-01-01 -r yourTagName
于 2009-06-23T21:00:34.997 回答
0

我不知道有什么工具可以帮助您,但是如果您正在编写自己的工具,我可以让您摆脱一个难题:CVS 中的目录不能被标记。只有其中的文件有标签(当您在特定标签上签出目录时,这决定了签出的内容)。

于 2008-08-26T18:59:22.330 回答