有一个传统的CVS存储库,其中包含大量目录,子目录和路径。还有大量的分支和标签,不必覆盖所有路径和标签。文件 - 通常是子集。我怎样才能找出哪个分支/标签涵盖了哪些文件和路径?
CVS日志已经提供了每个文件的标签列表。该任务要求我将其转换为每个标签的文件。我在当前的WinCVS(CVSNT)实现中找不到这样的功能。给定充足的空循环,我可以编写一个Perl脚本来做到这一点,算法并不复杂,但需要完成。
我想有些人需要这些信息并解决了这个问题。因此,我认为应该是一个随时可用的(开源/免费)工具。
答案 0 :(得分:11)
要列出文件上的标签,我们也可以这样做:
cvs status -v <file>
答案 1 :(得分:7)
要确定哪些标签适用于特定文件,请使用:
cvs log <filename>
这将输出文件的所有版本以及已应用于版本的标签。
要确定单个标记中包含哪些文件,我唯一能想到的是使用标记检出并查看哪些文件返回。对此的命令是以下任何一个:
cvs update -r <tagname>
cvs co <modulename> -r <tagname>
cvs export <modulename> -r <tagname>
答案 2 :(得分:4)
上面引用的方法对我不起作用
cvs -q rdiff -s -D 2000-01-01 -r yourTagName
然而,在经历了很多混乱之后,我意识到了cvs -q rdiff -s -D 2000-01-01 -r yourTagName ModuleName
作品
答案 3 :(得分:2)
您无需进行实际结帐。您可以使用-n选项仅模拟此:
cvs -n co -rTagName ModuleName
这将为您提供模块ModuleName中标记为TagName的所有文件的名称。
答案 4 :(得分:1)
以下命令提供该标记“yourTagName”中的文件列表。这些文件都标记为新文件,修订信息在“yourTagName”中。
此命令在2000-01-01和您的标记之间进行差异,可以使用更早的其他日期。
cvs -q rdiff -s -D 2000-01-01 -r yourTagName
答案 5 :(得分:0)
我不知道任何可以帮助你的工具,但如果你自己编写,我可以免除一个问题:CVS中的目录不能是tagget。只有它们中的文件有标签(这就是确定在签出特定标签上的目录时检出的内容)。