Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

I2993 — doctor spočítá práci, kterou nedrží žádný remote, jedním průchodem, ať je větví kolik chce

Zařídit, aby čtení `clone unpushed` v doctor byl jeden průchod klonem: commity, které dosáhne některá větev a žádný remote, s jejich rodiči (`git rev-list --parents --branches --not --remotes`), a hrot každé větve (`git for-each-ref`). Počet každé větve je počet commitů z této množiny, které její hrot dosáhne, procházených uvnitř množiny. Nález, jeho znění a jeho počty jsou to, co dával `rev-list --count` pro každou větev zvlášť.

HOTOVO vlna 0 · p1 · profil implementation · bezpečné souběžně

Součást a-second-adopter-is-served — A second adopter is served: what a foreign repository met on its first day is fixed in the tool.

Cíl

Zařídit, aby čtení `clone unpushed` v doctor byl jeden průchod klonem: commity, které dosáhne některá větev a žádný remote, s jejich rodiči (`git rev-list --parents --branches --not --remotes`), a hrot každé větve (`git for-each-ref`). Počet každé větve je počet commitů z této množiny, které její hrot dosáhne, procházených uvnitř množiny. Nález, jeho znění a jeho počty jsou to, co dával `rev-list --count` pro každou větev zvlášť.

Proč

Terénní hlášení adoptéra k 0.29.0 (prismatic-platform, 2026-10-18, položka 15) zjistilo reálný čas doctor 55–96 s proti rozpočtu 40 s. V commit hoocích tohoto repozitáře 2026-10-18 trval doctor 828 s proti rozpočtu 100 s (politika benchmark.budget.doctor_ms), v každé roli. Sekce `clone` spouštěla jedno `git rev-list --count <branch> --not --remotes` na lokální větev: 609 větví po zhruba 0,4 s pod zátěží. Role release to označila za největší opravu propustnosti na stole.

Aktuální stav

mj_report_clone spouští jeden rev-list na lokální branch, takže čas doctoru roste s počtem branchí a platí ho každý commit hook.

Cílový stav

Jeden rev-list a jeden for-each-ref, bez ohledu na počet větví; stejné větve pojmenované se stejnými počty.

Rozsah

  • lib/doctor.sh
  • test/cases/3384_doctor_reads_unpushed_in_one_pass.sh

Závislosti

Žádné. Tento úkol je kořenem grafu.

Kritéria přijetí

  • Větev na remote se nejmenuje, větev o dva commity napřed se jmenuje s 2 a větev, která sloučila jinou nepushnutou větev, počítá každý commit, který dosáhne, jednou
  • Každý počet se rovná `git rev-list --count <branch> --not --remotes` pro každou větev
  • doctor projde commity, které nedrží žádný remote, jednou pro 156 větví; verze po větvích je prochází 156krát a případ selže

Validace

  • bash test/run.sh 3384_doctor_reads_unpushed_in_one_pass 02_doctor_basic 276_disk_is_bounded

Požadované důkazy

  • case_doctor_one_walk

Důkazy

pokrývátypcommandvýsledeku commitu
case_doctor_one_walkcivalidate run 39438896504 at master 9a5a9b77520: suite shards 1-4 (jobs 118683336189 118683338077 118683336157 118683336457) run every case, incl. 3384_doctor_reads_unpushed_in_one_pass (ba44bed3fd1)success (the run's only red job is pages, which runs no test)a81b1e3

Časová osa

zahájeno
2026-10-20T16:18:53Z
ověřeno
—
dokončeno
2026-10-20T16:33:16Z

Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.

Kanonický záznam: .ai/repo/project/issues/I2993.yaml. Přečtěte ho zpět pomocí majordomus plan show I2993.

Prohledává názvy a popisy všech stránek, které tento web publikuje.