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.

Odvození vidí to, co uvidí commit

Odvození vidí to, co uvidí commit

majordomus://rule/project.a-derive-sees-what-the-commit-will@1aktivní odvozenomachine

odkazuje na něj

Zdůvodnění

Derive promítá to, co git sleduje. majordomus generate vypisuje přes index (--discovery vcs, smlouva vrstvy) a generátor webu čte git ls-files. To je správně, protože commitnuté artefakty musí promítat commitnutý strom. Znamená to ale, že soubor, který přidá další commit, je neviditelný pro derive, který commitu předchází. Projekce soubor vynechají a kontrola derived-current commit odmítne poté, co derive stál své minuty.

Dne 2026-10-09 to stálo release 0.19.0 dva zbytečné derive na stroji se zátěží 40. Záznam epizody a dvě generované stránky byly při spuštění derive nesledované. majordomus generate opravil registr a posunul vstup dat webu, takže se musel za frontou spustit plný derive znovu. Poznámka v paměti, která už říkala „stage new files before derive“, tomu nezabránila. Poznámku lze přeskočit; odmítnutí ve správný okamžik ne.

Požadované chování

  • Než počká na zámek nebo cokoli sestaví, scripts/derive vypíše git ls-files --others --exclude-standard. Pokud je cokoli uvedeno, jmenuje každý soubor, řekne, že ho má git add nebo ignorovat či odstranit, a skončí kódem 10.
  • To, co git ignoruje, nikdy nic neodmítne: .gitignore, .git/info/exclude a globální excludes. Release job drží stažené artefakty v dist/, které .gitignore z tohoto důvodu jmenuje.
  • MAJORDOMUS_DERIVE_ALLOW_UNTRACKED=1 nechá derive proběhnout s varováním, které jmenuje, kolik souborů nevidí. Je pro workera, který ví, že soubory nikdy nebudou commitnuty.
  • scripts/derive --preflight spouští tuto kontrolu samu. scripts/derive --locked -- <command> nic nepromítá a nedluží žádný preflight.
  • Argumenty se posuzují jako první, takže překlep v příznaku je chyba použití (exit 2) a nikdy odmítnutí stromu.

Chování při selhání

Odmítnutí přijde dříve, než se zámek vezme, takže odmítnutý derive nikdy nedrží frontu. Stojí čas, který git ls-files potřebuje.

Ověření

test/cases/1020_a_derive_sees_what_the_commit_will.sh spustí kopii scripts/derive v jednorázovém repozitáři a dokáže každé chování:

  • nesledovaná stránka je jmenována a odmítnuta s exit 10, stejně --preflight i plným derive;
  • odmítnutý derive nikdy nesestavuje a nikdy nebere zámek;
  • tentýž soubor, po přidání, projde;
  • soubory ignorované .gitignore a .git/info/exclude nikdy neodmítnou;
  • přepsání pokračuje s varováním;
  • --locked nevyžaduje žádnou předběžnou kontrolu.

Dvě mutace případ shodí: odebrání preflightu z cesty derive a vynechání --exclude-standard.

Odkud to pochází

kanonický soubor
.ai/repo/rules/project/a-derive-sees-what-the-commit-will.v1.md
identity
project.a-derive-sees-what-the-commit-will@1
dostupné také jako
Zdroj MCP majordomus://rule/project.a-derive-sees-what-the-commit-will@1 · majordomus entity show rule/project-a-derive-sees-what-the-commit-will-1 · GET /api/v1/entity?uri=majordomus://rule/project.a-derive-sees-what-the-commit-will@1
v Cockpitu
/cockpit/objects/rule/project-a-derive-sees-what-the-commit-will-1

Tato stránka je generována z výše uvedeného souboru pomocí scripts/generate-site-data; úprava stránky nic nemění, úprava souboru změní všechna rozhraní. Výše uvedené vztahy jsou hrany docs/generated/graph.json, které spustitelný program zapisuje ze stejného indexu.

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