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

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

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

有帮助吗?

解决方案

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

cvs log <filename>

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

要确定单个标签中包含哪些文件,我唯一能想到的就是使用该标签进行检查并查看返回了哪些文件。其命令是以下任意一个:

cvs update -r <tagname>
cvs co <modulename> -r <tagname>
cvs export <modulename> -r <tagname>

其他提示

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

cvs status -v <file>

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

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

然而经过一番折腾我意识到

cvs -q rdiff -s -D 2000-01-01 -r yourTagName 模块名称

作品

您不必进行实际结帐。您可以使用 -n 选项仅模拟此:

cvs -n co -rTagName ModuleName

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

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

此命令在 2000-01-01 和您的标签之间进行比较,请随意使用其他更早的日期。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top