conan report¶
conan report
命令包含一些子命令,用于返回有关包和库的信息。
$ conan report -h
usage: conan report [-h] [-v [V]] [-cc CORE_CONF] [--out-file OUT_FILE]
{diff} ...
Gets information about the recipe and its sources.
positional arguments:
{diff} sub-command help
diff Get the difference between two recipes with their
sources. It can be used to compare two different
versions of the same recipe, or two different recipe
revisions. Each old/new recipe can be specified by a
path to a conanfile.py and a companion reference, or
by a reference only. If only a reference is specified,
it will be searched in the local cache, or downloaded
from the specified remotes. If no revision is
specified, the latest revision will be used.
options:
-h, --help show this help message and exit
-v [V] Level of detail of the output. Valid options from less
verbose to more verbose: -vquiet, -verror, -vwarning,
-vnotice, -vstatus, -v or -vverbose, -vv or -vdebug,
-vvv or -vtrace
-cc CORE_CONF, --core-conf CORE_CONF
Define core configuration, overwriting global.conf
values. E.g.: -cc core:non_interactive=True
--out-file OUT_FILE Write the output of the command to the specified file
instead of stdout.
conan report diff¶
$ conan report diff -h
usage: conan report diff [-h] [-f FORMAT] [--out-file OUT_FILE] [-v [V]]
[-cc CORE_CONF] [-op OLD_PATH] -or OLD_REFERENCE
[-np NEW_PATH] -nr NEW_REFERENCE [-r REMOTE]
Get the difference between two recipes with their sources. It can be used to
compare two different versions of the same recipe, or two different recipe
revisions. Each old/new recipe can be specified by a path to a conanfile.py
and a companion reference, or by a reference only. If only a reference is
specified, it will be searched in the local cache, or downloaded from the
specified remotes. If no revision is specified, the latest revision will be
used.
options:
-h, --help show this help message and exit
-f FORMAT, --format FORMAT
Select the output format: json, html
--out-file OUT_FILE Write the output of the command to the specified file
instead of stdout.
-v [V] Level of detail of the output. Valid options from less
verbose to more verbose: -vquiet, -verror, -vwarning,
-vnotice, -vstatus, -v or -vverbose, -vv or -vdebug,
-vvv or -vtrace
-cc CORE_CONF, --core-conf CORE_CONF
Define core configuration, overwriting global.conf
values. E.g.: -cc core:non_interactive=True
-op OLD_PATH, --old-path OLD_PATH
Path to the old recipe if comparing a local recipe is
desired
-or OLD_REFERENCE, --old-reference OLD_REFERENCE
Old reference, e.g. 'mylib/1.0'. If used on its own,
it can contain a revision, which will be resolved to
the latest one if not provided, but it will be ignored
if a path is specified. If used with a path, it will
be used to create the reference for the recipe to be
compared.
-np NEW_PATH, --new-path NEW_PATH
Path to the new recipe if comparing a local recipe is
desired
-nr NEW_REFERENCE, --new-reference NEW_REFERENCE
New reference, e.g. 'mylib/1.0'. If used on its own,
it can contain a revision, which will be resolved to
the latest one if not provided, but it will be ignored
if a path is specified. If used with a path, it will
be used to create the reference for the recipe to be
compared.
-r REMOTE, --remote REMOTE
Look in the specified remote or remotes server
conan report diff
命令用于获取两个 recipe 之间的差异,同时还会比较它们的源码。此功能允许您比较同一 recipe 的两个版本,或两个完全不同的 recipe。每个 recipe(旧和新)都可以通过以下两种方式之一进行识别:提供其 conanfile.py
的路径及其引用,或者仅指定引用。
当仅给出引用时,Conan 会首先在本地缓存中搜索该 recipe;如果找不到,它将尝试从已配置的远程仓库下载。如果未明确提供修订版本,Conan 将默认使用可用的最新修订版本。
示例¶
远程引用 vs 远程引用¶
如果我们想比较在 my-remote
远程仓库中可用的 mylib
的 1.0 和 2.0 版本,那么命令将是:
$ conan report diff --old-reference="mylib/1.0" --new-reference="mylib/2.0" -r=my-remote
远程引用 vs 本地引用¶
假设我们正在修改 recipe 或添加新版本,并且想将我们的更改与远程仓库中的某个版本进行比较。不在远程仓库中的版本需要提供 recipe 的路径才能进行比较。如果我们要修改的是旧版本且它在远程仓库中找不到,我们将使用 --old-path
。
$ conan report diff --old-reference="mylib/1.0" --old-path="path/to/recipe" --new-reference="mylib/2.0"
另一方面,如果我们修改的是新版本,那么我们将使用 --new-path
。
$ conan report diff --old-reference="mylib/1.0" --new-reference="mylib/2.0" --new-path="path/to/recipe"
本地引用 vs 本地引用¶
最后,如果我们正在修改两个版本,我们需要提供两个路径。这两个路径可能相同,也可能不同。
$ conan report diff --old-reference="mylib/1.0" --old-path="path/to/recipe" --new-reference="mylib/2.0" --new-path="path/to/recipe"
指定修订版本¶
该命令允许您指定要比较的包的修订版本。默认情况下,它使用最新的修订版本,但通过提供修订版本,您可以精确地定位要比较的包。这使得诸如比较具有不同修订版本的两个相同版本以检查它们之间的差异成为可能。
$ conan report diff --old-reference="mylib/1.0#oldrev" --new-reference="mylib/1.0#newrev"
可用的格式化器¶
文本格式化器¶
默认情况下,它会显示此格式,这是由 git diff
命令提供的格式,用于比较包。
JSON 格式化器¶
您可以获取 JSON 格式的结果,它提供了结构化的输出,非常适合被其他脚本使用。
$ conan report diff --old-reference="mylib/1.0" --new-reference="mylib/2.0" --format=json
HTML 格式化器¶
HTML 格式会在单个 HTML 文件中生成一个小型、独立的静态网页。此页面可以方便地可视化 recipe 中的更改以及库的源码文件中的更改。它包含用于包含和排除关键字的过滤器以及指向所有已更改文件的快捷方式。
$ conan report diff --old-reference="zlib/1.3" --new-reference="zlib/1.3.1" --format=html > diff.html
