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.

Archiv, který ztratil režimy souborů, selže, místo aby se distribuoval

majordomus archive zapíše snímek sledovaného stromu a před návratem ho znovu otevře. Počet položek v kontejneru se musí rovnat tomu, co bylo stagováno, a pokud do něj vstoupily spustitelné soubory a žádný nevyšel ven, příkaz selže s kódem 13 a příkazem k reprodukci, místo aby vám předal kopii, ve které nic nejde spustit.

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: zastaralé 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

Mód každé položky se bere z indexu gitu, zapisuje se do manifestu archivu a před návratem příkazu se prokazuje skrz kontejner.

Co to znamená

majordomus archive zapíše snapshot sledovaného stromu a před návratem ho znovu otevře. Počet položek v kontejneru se musí rovnat tomu, co bylo připraveno, a pokud se spustitelné soubory dovnitř dostaly a žádný nevyšel, příkaz selže s kódem 13 a příkazem k reprodukci, místo aby vám předal kopii, ve které nic nemůže běžet.

Princip

Režim každé položky se čte z indexu gitu — autority v tom, čím soubor je, a ne z pracovního stromu, jehož režimy mohla dřívější neopatrná kopie už zploštit. Zapisuje se do _ARCHIVE/MANIFEST.txt jako <mode> <size> <path> a _ARCHIVE/restore.sh uvnitř archivu je na druhém konci všechny znovu uplatní a vytvoří lokální git index, protože tento repozitář se vyjmenovává přes git ls-files a kontrola spuštěná bez něj nezkoumá nic a hlásí, že nic není špatně.

Kontejner se zapisuje bez zip -X. Tento přepínač odstraňuje dodatečná pole nesoucí unixový režim, čímž vzniklo selhání, kvůli kterému toto tvrzení existuje: archiv se správným počtem položek, s každým bajtem obsahu a bez jediného spustitelného souboru.

Jak to vidět

majordomus archive audit --out /tmp/a.zip
cd /tmp && unzip -q a.zip && cd <repository>
ls -l scripts/derive          # still 755
sh _ARCHIVE/restore.sh        # modes re-applied, one commit, a real index
scripts/ci/command-furnished  # a gate of the repository, running in the copy

Co nepokrývá

Obnovená kopie má jeden commit, žádné remotes a žádný reflog. Jakákoli kontrola, která čte víc než pracovní strom, to řekne; žádná z nich tímto tvrzením neprojde. Archiv také není podepsaný, nelze ho vrátit do původního repozitáře a není to záloha.

Proč existuje

Vadu na vzdáleném konci tam nelze odlišit od vady v repozitáři. Archivu věří někdo, kdo ho nemůže porovnat s originálem, takže porovnání musí proběhnout před odesláním.

Detail vykreslený z docs/claims/archive-fidelity.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Archiv, který ztratil režimy souborů, selže, místo aby se distribuoval

    Vytvořeno na Projection.

  2. 2 · kanonické tvrzení

    archive-fidelitydeklarovaný stav: zaručeno v docs/CLAIMS.yaml

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

  3. 3 · implementace

    lib/archive.sh · majordomus archive

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

    Test: test/cases/130_archive.sh

    Provedeno v Předání repozitáře někomu, kdo ho nemůže naklonovat.

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: zastaralé 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 130_archive

Kde se toto tvrzení používá

pokryté odpovědnosti

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