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.

Úloha bude vědět, které commity vytvořila, místo aby je odvozovala z rozsahu

**Toto není implementováno.** Je to zveřejněno proto, aby známá mezera byla viditelná, a nepředpokládalo se, že je pokryta.

deklarovaný stavdeklarovaný stav: plánováno Specifikováno, ale neimplementováno. Uvedeno, aby bylo vidět, co chybí.

zaznamenané důkazyzaznamenané důkazy: žádný test Neposuzováno: k zaznamenanému běhu je vázáno jen zaručené tvrzení. jak se zaznamenávají důkazy

Rozsah se dnes kontroluje pomocí git diff base..HEAD a rozsah commitů nemá autora, takže když do téže větve ve stejném checkoutu commituje jiná relace, její soubory se započtou jako práce této úlohy. Zaznamenání každého commitu v okamžiku, kdy vznikne, mění otázku z heuristiky nad rozsahy na výčet. Seznam by byl jen vyhledávací tabulkou, kterou git přebije, nikdy autoritou, a přepsaný commit by se ohlásil jako nerozpoznaný, ne odhadem přiřazený.

Co to znamená

Toto není implementováno. Publikuje se, aby známá mezera byla viditelná a nepředpokládalo se, že je pokryta.

Rozsah je tvrzení o tom, kterých cest se tento worker dotkl. check na něj odpovídá pomocí git diff <base>..HEAD plus pracovního stromu — a rozsah commitů nemá autora. Když jiná relace commituje na stejnou větev ve stejném checkoutu, každý soubor, kterého se dotkla, se hlásí jako mimo váš rozsah. Report má o souborech pravdu a o tom, kdo je změnil, se mýlí.

Zamýšlený tvar je, že úloha zná množinu commitů, které vyprodukovala, protože každý zaznamenala, jak vznikal, místo aby je odvozovala ze dvou krajních bodů.

Jak to funguje dnes

mj_git_touched v lib/common.sh sjednocuje git status --porcelain s git diff --name-only <recorded head> HEAD. check, finish a watch všechny měří rozsah proti této množině. Je přesně správná pro jednoho pracovníka na jedné větvi a zhoršuje se ve chvíli, kdy tento předpoklad přestane platit.

Pole worktree na záznamu úlohy vyřešilo sousední problém — záznam z jiného checkoutu už na vašem nevynucuje svůj rozsah. Tento je jiný: checkout je skutečně týž, takže žádné identifikační pole nemůže oba pracovníky rozlišit.

Jak to vidět

majordomus start "my task" --scope lib/auth
# another session commits to this branch, in this checkout, touching docs/ and site/
majordomus check
# FAIL scope  docs/README.md — outside claimed scope (lib/auth)
# FAIL scope  site/templates/base.html — outside claimed scope (lib/auth)

Ani jeden soubor není váš. Dnešní náprava je majordomus handover --close a začít znovu na aktuálním commitu, což docs/CONTINUITY.md dokumentuje pod „What this does not do“.

Co nepokrývá

Dvě vlastnosti jsou záměrná odmítnutí, ne otevřené otázky, a právě ony dělají tvar hodným stavby, a ne jen pohodlným.

Seznam je vyhledávání, nikdy autorita. Každá jeho odpověď se ověřuje proti samotným commitům a kde se obě neshodují, vyhrává git a neshoda je nález. Je to totéž pravidlo, které záznam úlohy už dodržuje pro head a branch; není to nový princip, jen existující aplikovaný na nové pole.

Přepsaný commit se hlásí jako nerozpoznaný, nesleduje se potichu. Amend nebo rebase znamená, že zaznamenaný commit už neexistuje. Tiše to rozřešit na „asi tenhle“ by učinilo záznam měkčím než git, což maří důvod, proč se vůbec zaznamenává.

Kromě toho nepřipisuje práci uvnitř jednoho commitu, neví o commitech vytvořených pomocí --no-verify a neříká nic o tom, kdo napsal který řádek.

Proč existuje

Přišlo se na to používáním nástroje. Čtyři záznamy úloh byly za jediný večer uzavřeny a znovu zahájeny, protože peers commitující do téže větve zastarávali základ každé úlohy — kontrola rozsahu měla pokaždé pravdu a pokaždé byla k ničemu.

Pozorování, které návrh rozřešilo, bylo, že chybějící fakt se týká commitu, ne úlohy, a že git ho už nese: každý commit má autora a čas a hook pre-commit, který už spouští doctor, stojí v jediném okamžiku, kdy je odpověď zdarma. Toto vymezení také zlevňuje druhou otázku — history by pak mohlo odpovědět „co tato úloha změnila“ bez jakéhokoli diffu — a návrh, který usnadní nesouvisející otázku, obvykle řeže po vláknu, ne proti němu.

Je to větší než pole worktree, potřebuje odpověď pro amend a rebase a je tu zaznamenáno jako směr, a ne ponecháno jako folklor ve vlákně zpráv.

Detail vykreslený z docs/claims/task-commit-attribution.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Úloha bude vědět, které commity vytvořila, místo aby je odvozovala z rozsahu

    Vzniklo na Původ, Rozsah.

  2. 2 · kanonické tvrzení

    task-commit-attributiondeklarovaný stav: plánováno v docs/CLAIMS.yaml

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

  3. 3 · implementace

    Zatím to nic neimplementuje.

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

    Žádné spustitelné důkazy nejsou propojeny: tvrzení nejmenuje žádný test a žádný případ užití ho nespouští.

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: žádný test jak se zaznamenávají důkazy

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.