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.

Špatně umístěný worktree se přesune na svou kanonickou cestu se zachovanou změněnou, připravenou, nepřipravenou i nesledovanou prací, ověřeno otiskem pořízeným před přesunem a po něm, a krok se hlásí jako přesunutý, jen když se oba rovnají

majordomus worktree migrate přivede worktree na jeho kanonickou cestu přesně tak, jak je:

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

Plán nic nemění a před aplikací se přepočítá pod zámkem repozitáře. Git přesune adresář jedním přejmenováním; obyvatel kontejneru odejde na přípravnou cestu a pak dovnitř; přesun mezi souborovými systémy se odmítne, pokud není povolena kopie, a pak se ověří proti manifestu každé položky, než se odstraní originál. Nic se neresetuje, neodkládá do stashe, nečistí, nečekoutuje ani nepřepisuje: existující cíl je pojmenovaný konflikt, zamčený worktree čeká, odpojený se nikdy nepřesouvá a pracovní checkout relace se hlásí a přesouvá jen na požádání.

Co to znamená

majordomus worktree migrate přesune worktree na jeho kanonickou cestu přesně tak, jak je: včetně upravených, stagovaných, nestagovaných a nesledovaných souborů, s nezměněnou branch a HEAD. Každý přesun se před a po otiskne a hlásí se jako přesunutý, jen když jsou oba otisky shodné.

Princip

migrate::plan vypíše každý špatně umístěný worktree s branchí, nejdřív obyvatele kontejneru, s tím, co každý blokuje. migrate::apply to přepočítá pod zámkem repozitáře a v každém kroku zachytí WorktreeFingerprint — branch, HEAD, index, staged diff, unstaged diff, každý nesledovaný soubor s hashem obsahu, každou ignorovanou položku podle přítomnosti — spustí git worktree move s absolutními cestami, zachytí otisk v cíli, zkontroluje, že git tam worktree registruje, a porovná. Obyvatel kontejneru jde na staging cestu a pak dovnitř; přesun přes souborové systémy se provádí kopií, git worktree repair, ověřením proti manifestu každé položky a teprve poté odstraněním originálu, a to jen s --allow-copy. Relativní odkazy, které se už nevyřeší, se pojmenují.

Jak to vidět

majordomus worktree migrate --plan      # dirty counts per step; nothing changes
majordomus worktree migrate --format json | jq '.steps[] | {branch, outcome, differences}'

Co nepokrývá

Zamčený worktree je blokován, dokud není odemčen; odpojený worktree nemá kanonickou cestu a nikdy se nepřesouvá; dočasný checkout relace se přesune jen s --include-ephemeral; existující cíl se nikdy nepřepíše. Otisk dosvědčuje ignorovaný obsah přítomností a velikostí, ne obsahem: pohybuje se s adresářem jako vše ostatní.

Proč existuje

„Automaticky přesunout stávající worktrees“ bez důkazu zachování by bylo sofistikovanější hazardování s nedokončenou prací.

Detail vykreslen z docs/claims/worktree-migration-lossless.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Špatně umístěný worktree se přesune na svou kanonickou cestu se zachovanou změněnou, připravenou, nepřipravenou i nesledovanou prací, ověřeno otiskem pořízeným před přesunem a po něm, a krok se hlásí jako přesunutý, jen když se oba rovnají

    Vytvořeno v Worktrees.

  2. 2 · kanonické tvrzení

    worktree-migration-losslessdeklarovaný stav: zaručeno v docs/CLAIMS.yaml

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

  3. 3 · implementace

    apps/majordomus-cli/src/worktree/migrate.rs

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

    Test: test/cases/96_worktree_topology.sh

    Provedeno v Práce na větvi v jediném worktree, do kterého patří.

  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 96_worktree_topology

Kde se toto tvrzení používá

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

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