bencher runでのブランチ選択
A Branch は 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を選択するには、--branch
オプションまたは BENCHER_BRANCH
環境変数を、Branchの名前、スラッグ、またはUUIDに設定します。
指定された値が名前またはスラッグであり、Branchが既に存在しない場合、自動的に作成されます。
一方、指定された値がUUIDの場合はそのBranchが既に存在している必要があります。
両方が指定された場合、--branch
オプションが BENCHER_BRANCH
環境変数より優先されます。
どちらも指定されていない場合、Bencher CLIは現在の git
ブランチを探します。
まず、現在の作業ディレクトリ内で git
リポジトリを探します。
見つからない場合は、親ディレクトリに進み、ルートディレクトリまで再試行します。
git
リポジトリが見つかった場合は、現在の短縮ブランチ名が使用されます。
しかし、git
リポジトリが見つからない場合は、main
がデフォルトのBranchとして使用されます。
--start-point <BRANCH>
指定されたブランチ名、スラッグ、またはUUIDを開始ポイントとしてブランチオプションで使用します。
GitHubでは通常、プルリクエストのbase
ブランチとして使用され、
GitLabでは通常、マージリクエストのtarget
ブランチとして使用されます。
--start-point
の主な使用ケースは統計的継続ベンチマーキングです。
- 指定された開始ポイントが空文字列の場合、このオプションは無視されます。
branch
が存在しない場合、この開始ポイントを使用して作成されます。branch
が存在し、開始ポイントが同じ場合、このオプションは無視されます。branch
が存在し、開始ポイントが異なる場合、 更新された開始ポイントを使用して新しいbranch
ヘッドが作成されます。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
または指定されたハッシュが異なる場合、新しいbranch
Headが指定されたハッシュでstart-point
から作成されます。branch
が存在せず、指定されたハッシュでstart-point
が存在しない場合、branch
は履歴データなしで作成されます。branch
が存在し、指定されたハッシュでstart-point
が存在しない場合、このオプションは無視されます。
スタートポイントで新しいbranch
が作成された場合、指定されたハッシュでstart-point
からの最新データおよび任意でスレッショルドもコピーされます。詳細は--start-point-max-versions
オプションおよび--start-point-clone-thresholds
オプションを参照してください。
例えば、feature_branch
がそのスタートポイントをmain
ブランチのハッシュ32aea434d751648726097ed3ac760b57107edd8b
として存在している場合、--branch feature_branch --start-point main --start-point-hash 68b12758509ca5e2b1e3983525625e532eb5f562
を使用すると:
- 古い
feature_branch
Headが削除されます。 - 新しい
feature_branch
Headが作成されます。 main
のハッシュ68b12758509ca5e2b1e3983525625e532eb5f562
からの最新データが新しいfeature_branch
Headにコピーされます。- その後、
bencher run
は新しいfeature_branch
Headを使用して進行します。
--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
を使用すると、
main
の最新の100
バージョンのみがfeature_branch
に含まれます。
--start-point-clone-thresholds
branch
オプションのためにStart PointからすべてのThresholdsをクローンします。このフラグを使用するには、the --start-point
optionを設定する必要があります。
- Thresholdが存在しない場合、
start-point
Thresholdから作成されます。 - Thresholdが存在し、かつ
start-point
Thresholdと同じである場合、そのThresholdは事実上無視されます。 - Thresholdが存在し、そのモデルが
start-point
Thresholdと異なる場合、古いモデルはstart-point
Thresholdモデルで置き換えられます。 - Thresholdが存在し、
start-point
Thresholdが存在しない場合、そのThresholdモデルは削除されます。
例えば、feature_branch
が存在し、そのStart Pointがmain
ブランチであり、main
には組み込みのlocalhost
Testbedとlatency
MeasureのためのThresholdが存在する場合、--branch feature_branch --start-point main --start-point-clone-thresholds
を使用すると、localhost
Testbedとlatency
Measureを持つ新しいThresholdがfeature_branch
に作成されます。
--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 を使用して続行されます
🐰 おめでとうございます!ブランチ選択に関するすべてを学びました!🎉