使用 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 将会:

  1. 创建一个名为 feature_branch 的新分支
  2. 将最近的数据从 main 复制到 feature_branch
  3. 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且其起始点是哈希为32aea434d751648726097ed3ac760b57107edd8bmain分支,则使用--branch feature_branch --start-point main --start-point-hash 68b12758509ca5e2b1e3983525625e532eb5f562将会:

  1. 移除旧的feature_branch分支头
  2. 创建新的feature_branch分支头
  3. 将来自main在哈希68b12758509ca5e2b1e3983525625e532eb5f562的所有最新数据复制到新的feature_branch分支头
  4. 然后使用新的feature_branch分支头执行bencher run

--start-point-max-versions <COUNT>


使用指定的历史分支版本最大数量,从起始点中为branch选项包含。超出此数量的版本将被省略。默认值是255版本。此选项需要设置--start-point选项

例如,如果feature_branch的起始点为main分支,并且main300个版本,那么使用--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 会:

  1. 移除旧的 feature_branch Head
  2. 创建一个没有历史数据的新 feature_branch Head
  3. bencher run 随后将使用新的 feature_branch Head 进行

🐰 恭喜!您已经学会了所有关于分支选择的知识!🎉


继续前进:阈值和警告 ➡

🤖 该文档由 OpenAI GPT-4 自动生成。 它可能不准确并且可能包含错误。 如果您发现任何错误,请在 GitHub 上提出问题.


Published: Fri, October 27, 2023 at 8:40:00 AM UTC | Last Updated: Sun, October 13, 2024 at 12:36:00 PM UTC