如何找出哪些CVS标签覆盖了哪些文件和路径?

时间:2020-03-05 18:43:28  来源:igfitidea点击:

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

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

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

解决方案

回答

我不知道有什么工具可以为我们提供帮助,但是,如果我们正在编写自己的工具,那么可以避免一个麻烦:CVS中的目录不能成为标签。只有其中的文件具有标签(这是确定在特定标签上签出目录时确定要签出什么内容的原因)。

回答

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

cvs log <filename>

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

要确定单个标签中包含哪些文件,我唯一想到的就是使用标签签出并查看返回的文件。该命令是以下任何一项:

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

回答

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

cvs -n co -rTagName ModuleName

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

回答

以下命令提供了该标签" yourTagName"中的文件的列表。文件全部标记为新的,修订信息在" yourTagName"中。

此命令在2000-01-01和标记之间进行了区分,请随时使用另一个较早的日期。

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

回答

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

cvs status -v <file>

回答

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

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

但是,经过很多混乱之后,我意识到

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

作品