bencher runでのブランチ選択
Branchはgit
の参照(例えばブランチ名やタグ)です。
bencher run
CLIサブコマンドを使用する際は、
--branch
オプションかBENCHER_BRANCH
環境変数を使ってBranchを選択します。
デフォルトでは、すべてのプロジェクトはmain
ブランチから始まり、
どちらも指定しない場合はmain
がデフォルトとして使用されます。
連続ベンチマーク、つまりCIでのベンチマークの際には、
既存のBranchに対してブランチを作成またはリベースしたいことがよくあります。
これをBranchの開始ポイントと呼びます。
開始ポイントは、特定のバージョン(と可能ならgit
ハッシュ)の別のBranchです。
bencher run
CLIサブコマンドを使用する際は、
--branch-start-point
オプションで開始ポイントを選択します。
さらに、--branch-start-point-hash
オプションを用いて開始ポイントの特定のgit
ハッシュを指定します。
すべてのデータとしきい値が開始ポイントからコピーされます。
ドリフトを防ぐために、--branch-reset
フラグを使って常にブランチを開始ポイントにリセットするようにします。
--branch <BRANCH>
ブランチを選択するには、--branch
オプションまたは BENCHER_BRANCH
環境変数を、
ブランチの名前、スラグ、またはUUIDに設定します。
指定された値が名前またはスラグで、ブランチがまだ存在しない場合は、そのブランチが作成されます。
しかし、指定された値がUUIDの場合は、そのブランチは既に存在していなければなりません。
両方が指定された場合、--branch
オプションが BENCHER_BRANCH
環境変数より優先されます。
指定されていない場合、Bencher CLIは現在のgit
ブランチを見つけようとします。
まず、現在の作業ディレクトリでgit
リポジトリを探します。
成功しない場合は、親ディレクトリに移動してルートディレクトリまで再試行します。
git
リポジトリが見つかった場合は、現在の短いブランチ名が使用されます。
しかし、git
リポジトリが見つからない場合は、main
がデフォルトのブランチとして使用されます。
--branch-start-point <BRANCH>
指定されたブランチ名、スラッグ、またはUUIDをbranch
オプションの開始点として使用します。
GitHubの場合、通常これはプルリクエストのbase
ブランチであり、
GitLabの場合、通常これはマージリクエストのtarget
ブランチです。
--branch-start-point
の主な使い方は統計的継続的ベンチマークです。
- 指定された開始点が空の文字列の場合、このオプションは無視されます。
branch
が存在しない場合、この開始点を使用して作成されます。branch
が存在し、開始点が同じ場合、このオプションは無視されます。branch
が存在し、開始点が異なる場合、 古いバージョンのbranch
はリネームされてアーカイブされ、 更新された開始点を使用して新しいbranch
が作成されます。branch
が存在せず、開始点も存在しない場合、branch
は履歴データなしで作成されます。branch
が存在し、開始点が存在しない場合、 このオプションは無視されます。
新しいbranch
が開始点を使用して作成された場合、
指定された開始点からすべてのデータとしきい値がコピーされます。
例えば、feature_branch
がまだ存在しないが、main
は存在し、履歴データを持っている場合。
--branch feature_branch --branch-start-point main
を使用すると:
feature_branch
という名前の新しいブランチが作成されますmain
からfeature_branch
へすべてのデータとしきい値がコピーされますbencher run
はfeature_branch
を使用して実行されます
🐰 注意: 環境変数を使用する場合、環境変数はダブルクォートで囲む必要があります(例:
--branch-start-point "$MY_BRANCH_ENV_VAR"
)。 これは、MY_BRANCH_ENV_VAR
が未定義の場合にbencher run
がエラーを出さないようにするためです。
--branch-start-point-hash <HASH>
指定された完全なGitハッシュを開始ポイントとしてbranch
オプションに使用します。
このオプションは--branch-start-point
オプションの設定が必要です。
branch
が存在しない場合、指定されたハッシュのbranch-start-point
から作成されます。branch
が存在し、かつbranch-start-point
と指定されたハッシュが同じである場合、このオプションは無視されます。branch
が既に存在し、branch-start-point
または指定されたハッシュのいずれかが異なる場合、古いバージョンのbranch
はリネームされてアーカイブされ、新しいbranch
が指定されたハッシュのbranch-start-point
から作成されます。branch
が存在せず、branch-start-point
が指定されたハッシュで存在しない場合、branch
は履歴データなしで作成されます。branch
が存在し、branch-start-point
が指定されたハッシュで存在しない場合は、このオプションは無視されます。
新しいbranch
が開始ポイントで作成される場合、指定されたハッシュのbranch-start-point
からすべてのデータと閾値がコピーされます。
例えば、feature_branch
がmain
ブランチのハッシュ32aea434d751648726097ed3ac760b57107edd8b
を開始ポイントとして存在する場合、--branch feature_branch --branch-start-point main --branch-start-point-hash 68b12758509ca5e2b1e3983525625e532eb5f562
を使用すると:
- 古い
feature_branch
をfeature_branch@archive-suffix
にリネームし、アーカイブします。 - 新しいブランチ名
feature_branch
を作成します。 - ハッシュ
68b12758509ca5e2b1e3983525625e532eb5f562
の時点でのmain
からすべてのデータと閾値を新しいfeature_branch
にコピーします。 bencher run
は新しいfeature_branch
を使用して進行します。
--branch-reset
指定した branch
をリセットします。
--branch-start-point
オプションが設定されている場合、
branch
は指定された開始地点にリセットされます。
これは、統計的連続ベンチマーク データのドリフトを防ぐのに便利です。
開始地点を指定しない --branch-reset
の主な使用用途は
相対連続ベンチマーク です。
branch
が存在せず、開始地点も指定されていない場合、branch
は履歴データなしで作成されます。branch
が存在し、開始地点が指定されていない場合、 古いbranch
は名前が変更されてアーカイブされ、 新しいbranch
が履歴データなしで作成されます。branch
が存在せず、開始地点が指定されている場合、 指定された開始地点を使用してbranch
が作成されます。branch
が存在し、開始地点が指定されている場合、 古いbranch
は名前が変更されてアーカイブされ、 指定された開始地点を使用して新しいbranch
が作成されます。
開始地点を指定して新しい branch
が作成された場合、
指定された開始地点のすべてのデータとしきい値がコピーされます。
それ以外の場合、branch
は履歴データなしで作成されます。
例えば、feature_branch
が開始地点なしで存在している場合、
--branch feature_branch --branch-reset
を使用すると:
- 古い
feature_branch
をfeature_branch@archive-suffix
にリネームし、アーカイブする - 新しい
feature_branch
という名前のブランチを作成する bencher run
は新しいfeature_branch
を使用して進行する
🐰 おめでとうございます!ブランチ選択に関するすべてを学びました!🎉