使用 bencher run 进行分支选择
一个分支是 git
引用(即分支名称或标签)。
当使用 bencher run
CLI 子命令时,可以通过 --branch
选项或 BENCHER_BRANCH
环境变量来选择一个分支。
默认情况下,所有项目都从 main
分支开始,如果两者都未指定,则默认使用 main
分支。
当进行持续基准测试时,即在 CI 中进行基准测试时,您通常会希望在已存在的分支上创建或变基一个 branch
。
这被称为分支起始点。
起始点是特定版本(如果有,也包括 git
哈希)的另一个分支。
当使用 bencher run
CLI 子命令时,使用 --start-point
选项选择一个起始点。
此外,使用 --start-point-hash
选项指定起始点的特定 git
哈希。
从起始点复制的数据量可以通过 --start-point-max-versions
选项进行控制。
同样,阈值可以通过 --start-point-clone-thresholds
标志从起始点复制。
为了防止偏移,可以使用 --start-point-reset
标志始终将分支重置为起始点。
--branch <BRANCH>
要选择一个分支,设置 --branch
选项或 BENCHER_BRANCH
环境变量为分支的名称、标识或 UUID。
如果指定的值是名称或标识且分支尚不存在,它将为您创建。
但是,如果指定的值是 UUID,则必须事先存在该分支。
如果两者都指定了,则 --branch
选项优先于 BENCHER_BRANCH
环境变量。
如果两者都未指定,Bencher CLI 会尝试查找当前的 git
分支。
它首先在当前工作目录中寻找 git
仓库。
如果不成功,它将继续到其父目录,并一路重试直到根目录。
如果找到 git
仓库,则使用当前的短分支名称。
但是,如果未找到 git
仓库,则使用 main
作为默认分支。
--start-point <BRANCH>
使用指定的分支名称、标识或 UUID 作为起始点,用于branch
选项。
对于 GitHub,通常是拉取请求的 base
分支,
对于 GitLab,通常是合并请求的 target
分支。
--start-point
的主要用例是统计连续基准测试。
- 如果指定的起始点是一个空字符串,则忽略此选项。
- 如果
branch
不存在,将使用此起始点创建它。 - 如果
branch
已存在且起始点相同,则忽略此选项。 - 如果
branch
已存在且起始点不同, 将使用此更新的起始点创建一个新的branch
Head。 - 如果
branch
不存在且起始点不存在, 则该branch
将在没有任何历史数据的情况下被创建。 - 如果
branch
已存在且起始点不存在, 则忽略此选项。
如果使用起始点创建了一个新的 branch
,
则将从指定的起始点复制最近的数据和可选的阈值。
有关详细信息,请参阅--start-point-max-versions
选项和--start-point-clone-thresholds
选项。
例如,如果 feature_branch
尚不存在,但 main
存在并具有历史数据。
那么使用 --branch feature_branch --start-point main
将会:
- 创建一个名为
feature_branch
的新分支 - 将最近的数据从
main
复制到feature_branch
bencher run
将使用feature_branch
进行处理
🐰 注意:使用环境变量时,应该将其用双引号包裹(如
--start-point "$MY_BRANCH_ENV_VAR"
), 如果您希望在MY_BRANCH_ENV_VAR
未定义时不出错地执行bencher run
。
--start-point-hash <HASH>
使用指定的完整 Git 哈希作为branch
选项的起始点。此选项需要设置--start-point
选项。
- 如果
branch
不存在,它将从指定哈希的start-point
创建。 - 如果
branch
存在且start-point
与指定的哈希相同,则忽略此选项。 - 如果
branch
存在并且start-point
或指定的哈希不同,将从指定哈希的start-point
创建新的branch
分支头。 - 如果
branch
不存在且start-point
在指定哈希处不存在,则该branch
将在没有任何历史数据的情况下创建。 - 如果
branch
存在且start-point
在指定的哈希处不存在,则忽略此选项。
如果通过起始点创建了新的branch
,那么来自指定哈希的start-point
的所有最新数据和可选的阈值将被复制。有关更多细节,请参见--start-point-max-versions
选项和--start-point-clone-thresholds
选项。
例如,如果存在feature_branch
且其起始点是哈希为32aea434d751648726097ed3ac760b57107edd8b
的main
分支,则使用--branch feature_branch --start-point main --start-point-hash 68b12758509ca5e2b1e3983525625e532eb5f562
将会:
- 移除旧的
feature_branch
分支头 - 创建新的
feature_branch
分支头 - 将来自
main
在哈希68b12758509ca5e2b1e3983525625e532eb5f562
的所有最新数据复制到新的feature_branch
分支头 - 然后使用新的
feature_branch
分支头执行bencher run
--start-point-max-versions <COUNT>
使用指定的历史分支版本最大数量,从起始点
中为branch
选项包含。超出此数量的版本将被省略。默认值是255
版本。此选项需要设置--start-point
选项。
例如,如果feature_branch
的起始点为main
分支,并且main
有300
个版本,那么使用--branch feature_branch --start-point main --start-point-max-versions 100
只会在feature_branch
中包含main
的最近100
个版本。
--start-point-clone-thresholds
克隆所有来自起始点的阈值用于branch
选项。此标志需要设置 --start-point
选项。
- 如果阈值不存在,则会从
start-point
阈值创建。 - 如果阈值存在且与
start-point
阈值相同,则该阈值实际上被忽略。 - 如果阈值存在且其模型与
start-point
阈值不同,则旧模型将被start-point
阈值模型替换。 - 如果阈值存在且
start-point
阈值不存在,则将移除该阈值模型。
例如,如果feature_branch
存在,其起始点为main
分支,并且main
有一个用于内置localhost
测试平台和latency
度量的阈值,那么使用--branch feature_branch --start-point main --start-point-clone-thresholds
将为feature_branch
创建一个新的localhost
测试平台和latency
度量的阈值。
--start-point-reset
重置指定的 branch
。
当设置了 --start-point
选项时,
branch
将被重置到指定的起始点。
这对于防止统计连续基准测试数据的偏差非常有用。
在未指定起始点的情况下,--start-point-reset
的主要用例是相对连续基准测试。
- 如果
branch
不存在且未指定起始点,将在没有任何历史数据的情况下创建该branch
。 - 如果
branch
存在且未指定起始点, 将在没有任何历史数据的情况下创建一个新的branch
Head。 - 如果
branch
不存在且指定了起始点, 将使用起始点创建该branch
。 - 如果
branch
存在且指定了起始点, 将使用起始点创建一个新的branch
Head。
如果使用起始点创建新的 branch
,
则从指定哈希值的 start-point
复制所有最新数据以及可选的阈值。
有关更多详细信息,请参阅--start-point-max-versions
选项和--start-point-clone-thresholds
选项。
例如,如果存在 feature_branch
而没有起始点,
那么使用 --branch feature_branch --start-point-reset
会:
- 移除旧的
feature_branch
Head - 创建一个没有历史数据的新
feature_branch
Head bencher run
随后将使用新的feature_branch
Head 进行
🐰 恭喜!您已经学会了所有关于分支选择的知识!🎉