問題
takt list が ~20秒かかる。
原因
resolveBranchBaseCommitFromRefs (branchBaseCandidateResolver.ts:114) で、priority refs(main / origin/main)が有効な候補を見つけても、最初のコミットが takt: で始まらないと全 ref スキャン(78 refs × 3 git cmds ≒ 2.1s/branch)にフォールスルーする。該当ブランチ9本 × 2.1s ≒ 18.9s。
計測結果
| パス |
ブランチ数 |
1本あたり |
合計 |
| reflog(ローカル) |
8本 |
~10ms |
~0.08s |
priority で takt: hit |
~14本 |
~80ms |
~1.1s |
| 全 ref スキャン |
9本 |
~2.1s |
~18.9s |
修正
src/infra/task/branchBaseCandidateResolver.ts line 114 の早期リターン条件を緩和する。
// Before
if (priorityBest && priorityBest.firstSubject.startsWith(TAKT_COMMIT_PREFIX)) {
// After
if (priorityBest) {
priority refs が有効な merge-base を見つけたら takt: prefix の有無にかかわらず即座に返す。全 ref スキャンは priority が null の場合のみフォールバック。
効果
~20s → ~1.9s
問題
takt listが ~20秒かかる。原因
resolveBranchBaseCommitFromRefs(branchBaseCandidateResolver.ts:114) で、priority refs(main / origin/main)が有効な候補を見つけても、最初のコミットがtakt:で始まらないと全 ref スキャン(78 refs × 3 git cmds ≒ 2.1s/branch)にフォールスルーする。該当ブランチ9本 × 2.1s ≒ 18.9s。計測結果
takt:hit修正
src/infra/task/branchBaseCandidateResolver.tsline 114 の早期リターン条件を緩和する。priority refs が有効な merge-base を見つけたら
takt:prefix の有無にかかわらず即座に返す。全 ref スキャンは priority がnullの場合のみフォールバック。効果
~20s → ~1.9s