Skip to content

takt list: priority refs の早期リターン条件を緩和して全 ref スキャンを排除 #191

@nrslib

Description

@nrslib

問題

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions