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.

Každé vynucování, které politika deklaruje, je srovnáno s tím, co skutečně běží

Politika má seznam vynucování: věci, které mají spouštět Majordomus (pre-commit hook spouštějící doctor, pre-push hook spouštějící finish --check). U každé položky doctor prokazuje čtyři věci: spustitelný soubor existuje, je spustitelný, hook nebo soubor CI uvedený ve wired_by existuje a je spustitelný a tento soubor skutečně příkaz volá — aniž by zahodil jeho exit kód. Deklarace, která kteroukoli z nich nesplní, se hlásí jako nezapojená. Je to nejdůležitější kontrola v celém nástroji.

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

Cesta musí existovat, být spustitelná a být vyvolána jmenovaným dispatcherem. Hook, který ji vyvolá a zahodí návratový kód, se počítá jako nezapojený.

Co to znamená

Politika má seznam enforcement: věci, které mají spouštět Majordomus (pre-commit hook spouštějící doctor, pre-push hook spouštějící finish --check). U každé položky doctor dokazuje čtyři věci: executable existuje, je spustitelný, hook nebo soubor CI pojmenovaný v wired_by existuje a je spustitelný a ten soubor příkaz skutečně volá — bez zahození jeho exit kódu. Deklarace, která kterékoli z nich nesplní, se hlásí jako nezapojená. Toto je nejdůležitější jednotlivá kontrola v nástroji.

Princip

lib/doctor.sh rozliší path vynucování (na PATH, relativní k repozitáři, absolutní, nebo jako cestu zapsanou přímo na řádku hooku), rozliší adresář hooků přes core.hooksPath nebo .git/hooks/, přečte soubor hooku, hledá majordomus <first-arg> a poté na stejném řádku hledá || true nebo || exit 0. wired_by: ci:<file> kontroluje soubor CI stejným způsobem; wired_by: manual se hlásí jako neověřeno, nikdy jako zapojeno. doctor to spouští proti repozitáři, v němž je nainstalován — včetně hooků tohoto projektu v CI.

Jak to vidět

printf '#!/bin/sh\nmajordomus doctor || true\n' > .git/hooks/pre-commit && chmod +x .git/hooks/pre-commit
majordomus doctor
# FAIL wiring      doctor-on-commit — .git/hooks/pre-commit invokes it but swallows the exit code (|| true)

Co nepokrývá

Prokazuje dosažitelnost, ne historii provádění: zapojený hook lze stále obejít, když někdo upraví .git/hooks nebo naklonuje jinde. Jsou to dokumentovaná omezení každého lokálního hooku, uvedená v bezpečnostních poznámkách, ne tichá selhání.

Proč existuje

Ve zdrojovém prostředí se našlo sedmnáct nezávislých případů kontroly zdokumentované jako blokující, přítomné na disku, spustitelné a nevolané ničím — včetně dobře navrženého commit guardu, jehož registrace se tiše ztratila, když nesouvisející nástroje přepsaly soubor nastavení, zatímco jeho testy a dokumentace zůstaly na místě. Deklarováno, ale nezapojeno je výchozí koncový stav vynucování, ne okrajový případ; kontrola, která na to selže, je produkt.

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

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Každé vynucování, které politika deklaruje, je srovnáno s tím, co skutečně běží

    Vytvořeno na Doktrína, Doctor.

  2. 2 · kanonické tvrzení

    wiring-reconciliationdeklarovaný stav: zaručeno v docs/CLAIMS.yaml

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

  3. 3 · implementace

    lib/doctor.sh · majordomus doctor

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

    Test: test/cases/03_update.sh

    Provedeno v Dokažte, že je pravidlo skutečně vynucováno, nejen zapsáno, Politice a profilům důvěřujte až po jejich validaci, Kontrolujte CI samotným nástrojem s návratovým kódem, který je smlouvou.

  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 03_update

Kde se toto tvrzení používá

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.