代码之家  ›  专栏  ›  技术社区  ›  Ignas Limanauskas

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

cvs
  •  8
  • Ignas Limanauskas  · 技术社区  · 16 年前

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

    cvs日志已经提供了每个文件的标记列表。任务要求我将其转换为每个标记的文件。我在当前的WinCVS(CVSNT)实现中找不到这样的功能。如果有足够多的空循环,我可以编写一个Perl脚本来完成这一任务,那么该算法并不复杂,但需要完成。

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

    6 回复  |  直到 14 年前
        1
  •  7
  •   John Meagher    16 年前

    要确定应用于特定文件的标记,请使用:

    cvs log <filename>
    

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

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

    cvs update -r <tagname>
    cvs co <modulename> -r <tagname>
    cvs export <modulename> -r <tagname>
    
        2
  •  11
  •   Joakim Elofsson    15 年前

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

    cvs status -v <file>
    
        3
  •  4
  •   ninjasmith    14 年前

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

    cvs-q rdiff-s-d 2000-01-01-r你的名字

    然而,在经历了很多混乱之后,我意识到

    cvs-q rdiff-s-d 2000-01-01-r yourtagname模块名

    作品

        4
  •  2
  •   Oliver Giesen    16 年前

    你不必实际结账。您可以使用-n选项来模拟:

    cvs -n co -rTagName ModuleName
    

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

        5
  •  1
  •   Neil Han    15 年前

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

    这个命令在2000-01-01和您的标签之间做了一个比较,请随意使用更早的另一个日期。

    cvs -q rdiff -s -D 2000-01-01 -r yourTagName
    
        6
  •  0
  •   Johannes Hoff    16 年前

    我不知道有什么工具可以帮助你,但是如果你是自己写的,我可以从一个标题中保存你:cvs中的目录不能是tagget。只有其中的文件具有标记(这就是在签出特定标记上的目录时确定签出内容的原因)。