生成diff文件

Coco支持在
CoverageBrowser
cmreport中使用--patch选项进行补丁文件分析(参见
cmreport – 代码覆盖率报告生成)。为此,需要以统一格式的diff文件。它由diff工具和大多数版本控制系统提供。

以下示例在UNIX® shell和Microsoft® Windows命令窗口中都有效。

比较目录

如果源代码的两个版本位于文件系统的不同目录中,可以使用diff命令。这是标准的UNIX文件比较程序,其功能命名据此而来。

可以通过设置-u标志来设置统一格式,并将结果重定向到文件,使命令行看起来如下

$ diff -u project/version_1 project/version_2 > project.diff

然后比较目录project/version_1project/version_2,并将输出写入文件project.diff。在这个两个目录中,project/version_1被视为更早版本。

版本控制系统

在版本控制系统中,使用diff功能比较源代码树的两个修订版本。

对于大多数较新的版本控制系统,存在像Tortoise SVN这样的图形界面包装器,尤其是对于Windows。如果底层版本控制系统默认支持统一差异,那么图形界面包装器也应该如此。

  • Git:使用Git指定两个修订版本并重定向输出到文件。Git默认使用统一格式。使用以下命令比较两个修订版本:

    $ git diff <rev1> <rev2> > project.diff

    此命令默认创建整个源代码树的差异。

    有关Git中指定修订版本的方法列表,请参阅gitrevisions

  • Mercurial:分布式版本控制系统
    Mercurial默认以统一格式生成差分文件。比较Mercury变更集<rev1><rev2>

    $ hg diff -r <rev1> -r <rev2> > project.diff

  • Subversion:版本控制系统 Subversion默认生成统一差异。要生成差异,请编写:

    $ svn diff -r <rev1> -r <rev2> > project.diff

    其中<rev1><rev2>可以是标签或修订号。

  • CVS:此处描述的版本控制系统中最古老的是并发版本系统。它默认不使用统一格式。使用它比较两个修订需要编写以下命令:

    $ cvs diff -u -N -r <rev1> -r <rev2> > project.diff

    标志-u打开统一差异,而-N对于跟踪添加或删除文件的变化是必要的。由于CVS没有全局版本号,修订号<rev1><rev2>必须是标签或日期。然后命令会创建大量额外的控制台输出,但两个修订之间的差异仍将写入project.diff

    请注意,该命令仅列出当前目录及其子目录中的差异。

Coco v7.2.0©2024 The Qt Company Ltd.
Qt及其相应的标志是芬兰和/或其他国家的The Qt Company Ltd.的商标。所有其他商标都是其各自所有者的财产。