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.

Zapojení se najde v hooku nebo v kterémkoli subhooku adresáře, do kterého tento hook předává

Repozitář, jehož pre-commit je dispečer spouštějící vše v .githooks/pre-commit.d/, má stále skutečné vynucování. doctor hledá v samotném hooku i v každém souboru <hook>.d/ a hlásí soubor, který vyvolání skutečně nese — ne dispečera, který byl náhodou prohledán jako první.

deklarovaný stavdeklarovaný stav: zaručeno Deklarováno jako deterministické a blokující, implementováno a s uvedeným behaviorálním testem, který to má dokázat. Zda to zaznamenaný běh podporuje, říká verdikt důkazů zobrazený vedle.

zaznamenané důkazyzaznamenané důkazy: nespuštěno Deklarováno jako zaručené, ale nepodložené zaznamenaným během: test je pojmenován, ale žádný úspěšný běh nad současnými vstupy zaznamenán není. jak se zaznamenávají důkazy

Zjištění jmenuje soubor, který vyvolání skutečně nese. Podhook, který není spustitelný, se hlásí jako nezapojený, protože ho dispatcher přeskočí.

Co to znamená

Repozitář, jehož pre-commit je dispatcher spouštějící vše v .githooks/pre-commit.d/, má stále skutečné vynucování. doctor hledá v samotném hooku i v každém souboru <hook>.d/ a hlásí soubor, který volání skutečně obsahuje — ne dispatcher, který se náhodou prohledal první.

Princip

mj_hook_candidates v lib/doctor.sh rozbalí deklarovaný hook na soubor hooku plus seřazený obsah <hook>.d/. V každém kandidátovi se hledá deklarovaný příkaz. Zjištění pojmenovává soubor, kde byl nalezen, takže zpráva ukazuje na podhook, který by člověk upravoval. Podhook, který obsahuje vyvolání, ale není spustitelný, se hlásí jako nezapojený, protože dispatcher procházející jeho adresář ho přeskočí — kontrola sleduje, co dělá dispatcher, ne co říká soubor.

Jak to vidět

mkdir -p .githooks/pre-commit.d
printf '#!/usr/bin/env bash\nmajordomus doctor\n' > .githooks/pre-commit.d/70-majordomus.sh
majordomus doctor
# FAIL wiring  pre-commit — .githooks/pre-commit.d/70-majordomus.sh is not executable
chmod +x .githooks/pre-commit.d/70-majordomus.sh
majordomus doctor
# ok  wiring  pre-commit — invoked by .githooks/pre-commit.d/70-majordomus.sh

Co nepokrývá

Hledání je textové: dokazuje, že se příkaz objevuje v souboru, který dispatcher spustí, a že soubor je spustitelný. Dispatcher nesimuluje, takže subhook, který je spustitelný a obsahuje volání, ale za nějaké podmínky se předčasně vrátí, se hlásí jako zapojený. Spolknuté návratové kódy jsou samostatná kontrola.

Proč existuje

Číslované dispatchery *.d/ jsou běžný tvar repozitáře, který své hooky bere vážně. Vyžadovat po takovém repozitáři zploštění rozložení hooků kvůli kontrole by znamenalo, že se nástroj ohýbá repozitář kolem sebe.

Detail vykreslený z docs/claims/dispatcher-wiring.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Zapojení se najde v hooku nebo v kterémkoli subhooku adresáře, do kterého tento hook předává

    Vytvořeno na Doktrína, Doctor.

  2. 2 · kanonické tvrzení

    dispatcher-wiringdeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v přečtěte si to na tomto webu · docs/CLI.md

  3. 3 · implementace

    lib/doctor.sh · majordomus doctor

  4. 4 · test a scénáře

    Test: test/cases/14_wiring_dispatcher.sh

    Provedeno v Přijměte repozitář, který už má svá vlastní pravidla.

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: nespuštěno jak se zaznamenávají důkazy

Ověřte si to sami

Test běží v jednorázovém dočasném repozitáři a ověřuje chování, ne řetězec ve zdrojovém kódu.

z klonu repozitáře
bash test/run.sh 14_wiring_dispatcher

Kde se toto tvrzení používá

pokryté odpovědnosti

Související tvrzení stejná implementace

Okamžiky, na které to odpovídá

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