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.
majordomus migrate
Přesune data projektu z doby před .ai z .majordomus/ do .ai/, výslovně a se zálohou.
Přesune data projektu z doby před .ai z .majordomus/ do .ai/, výslovně a se zálohou.
generated-output-mutating
systém
běží před init
Běží jen na starém uspořádání. Lokální stav zkopíruje stranou dříve, než se cokoli pohne, nikdy nesmaže soubor, který nezná, a odmítne adresář, který obsahuje projektová data i instalaci nástroje.
Jen kódy, které tento příkaz může vrátit. Úplný kontrakt je na indexu příkazů.
0ok
2použití
10kontrakt nesplněn
12chybějící artefakt
13interní chyba
15odmítnuto
Opuštění starého rozložení, záměrně
migrate přesune projektová data z rozvržení před .ai pod .majordomus/ do přenosné vrstvy AI. Je explicitní, vypíše svůj plán, nejprve zkopíruje lokální stav stranou a nikdy nesmaže soubor, který nezná.
Plán a nic nezapsáno
--dry-run
ano
starší rozvržení
ano
Pro tento repozitář platí
# A repository still on the pre-.ai layout: project data under .majordomus/, no .ai/ at all.
# The tool no longer writes that layout, so it is assembled from a fresh installation.
. "$FIXTURE_SETUP/installed.sh"
mkdir -p .majordomus
for s in policy.yaml profiles prompts project; do [ -e ".ai/repo/$s" ] && mv ".ai/repo/$s" ".majordomus/$s"; done
mv .ai/local/state .majordomus/state
rm -rf .ai
sed -i.bak '/^\.ai\/local\/$/d' .gitignore && rm -f .gitignore.bak
git add -A && git commit -qm legacy
Každý soubor a kam půjde, ještě než se cokoli přesune. Plán, který překvapí, je plán k opětovnému přečtení, ne ke spuštění.
Samotný přesun
--dry-run
ne
starší rozvržení
ano
Pro tento repozitář platí
# A repository still on the pre-.ai layout: project data under .majordomus/, no .ai/ at all.
# The tool no longer writes that layout, so it is assembled from a fresh installation.
. "$FIXTURE_SETUP/installed.sh"
mkdir -p .majordomus
for s in policy.yaml profiles prompts project; do [ -e ".ai/repo/$s" ] && mv ".ai/repo/$s" ".majordomus/$s"; done
mv .ai/local/state .majordomus/state
rm -rf .ai
sed -i.bak '/^\.ai\/local\/$/d' .gitignore && rm -f .gitignore.bak
git add -A && git commit -qm legacy
Spustit
$ majordomus migrate
Výstup obsahuje
^migrated: .ai/ is the layout
ukončení0
Sledovaná polovina přistane pod .ai/repo/ a lokální polovina pod .ai/local/, které se od té chvíle ignoruje. Na konci běží doctor, takže první, co se na novém rozvržení uvidí, je jeho skutečný stav.
Není co migrovat a není žádná vrstva
--dry-run
ne
starší rozvržení
ne
Pro tento repozitář platí
# An empty git repository: no AI layer at all.
git commit -q --allow-empty -m base 2>/dev/null || true
Spustit
$ majordomus migrate
Výstup obsahuje
není co migrovat
ukončení12
Repozitář bez jednoho či druhého rozvržení se nemigruje do existence; je mu řečeno, aby spustil init.
Reference
Přesunout projektová data repozitáře z uspořádání před .ai pod .majordomus/ do přenosné AI vrstvy pod .ai/, jednou a výslovně. Žádný běžný příkaz nemigruje: check, doctor, start a ostatní zastaré uspořádání odmítnou (12) a pojmenují tento příkaz.
Značky: starý je .ai/repo/policy.yaml; nový je .ai/manifest.yaml; .majordomus/bin/majordomus je instalace nástroje a nikdy data projektu.
Čte: každý soubor pod .majordomus/, manifest skeletonu (odtud jsou cíle), šablony nástroje (aby se odlišila nezměněná šablona od upravené). Zapisuje:.ai/README.md, .ai/manifest.yaml; kanonické soubory přesunuté do .ai/repo/ (git mv tam, kde jsou sledovány, aby historie následovala); .ai/local/state/ přesunuté do .ai/local/state/ a vyjmuté z indexu; zbytek vrstvy osazený ze skeletonu bez přepsání čehokoli, co se přesunulo; jeden řádek .ai/local/ v .gitignore; bajt po bajtu kopii stavu pod tmp/majordomus-migrate-backup/<utc>/state/ a starého providers/ pod .../providers/, ověřenou a vypsanou, než se kterékoli z nich dotkne; řádek ledgeru layout.migrated; poté update --force vykreslí projekce z tenkých bootstrapů nástroje a doctor posoudí výsledek, každý exit je hlášen na vlastním řádku.
Behaviour:
--dry-run vypíše celý plán, jeden řádek na soubor s jeho akcí a cílem, a nic nezapisuje. Stejná tabulka řídí skutečný běh.
templates/*.md shodné s vlastními v nástroji se zahodí; upravené se přesune do .ai/repo/templates/. generated/ se zahazuje: každá projekce teď nese vlastní razítko.
providers/ — tělo poskytovatele a monolitické šablony, které si ho vyžádaly — se do .ai/ nepřenáší. Tělo už neexistuje nikde a update žádné nevykresluje, takže by stará šablona zanechala v generovaném souboru doslovný token. Adresář se zkopíruje do zálohy, odstraní z indexu a ohlásí jedním řádkem: bootstrapy jsou nyní tenké adaptéry nástroje, přepsání pro repozitář patří pod .ai/repo/providers/<provider>.tmpl v novém formátu a pravidla těla patří pod .ai/repo/rules/project/ jako objekty pravidel (DOCTRINE.md popisuje formát).
Soubor v .majordomus/, který tato verze nezná, se nikdy nesmaže. Ohlásí se a .majordomus/ se odstraní, jen když je prázdný.
Odmítne (15) .majordomus/, který obsahuje policy.yaml i bin/majordomus, a pojmenuje bezpečný ruční krok; odmítne (15), když cíl pod .ai/ již existuje, a vypíše každý takový. V obou případech se nic nezapíše.
Starší politika, která se neparsuje nebo není verze 1, se odmítne (10) dřív, než se cokoli přesune: nejdřív ji oprav na místě.
Idempotentní: v repozitáři, který už má rozvržení .ai, to řekne a skončí s 0. Pokud není přítomno žádné rozvržení, skončí s 12 a jmenuje init.
Stav přestane být sledován: jeho trvanlivost je checkout plus záloha, ne branch. Commitněte sledovanou polovinu po kontrole git status.
$ majordomus migrate --dry-runmigrate: .majordomus/ (pre-.ai layout) -> .ai/ (ai-repository/v1) move .ai/repo/policy.yaml -> .ai/repo/policy.yaml move .ai/repo/profiles/debugging.yaml -> .ai/repo/profiles/debugging.yaml state .ai/local/state/current.yaml -> .ai/local/state/current.yaml drop .majordomus/templates/handover.md (identical to the tool's template) ...dry run: nothing written
Důkazy
Každý případ níže běží v CI na Linuxu i macOS. Web se odmítne sestavit, pokud veřejný příkaz nemá behaviorální případ, negativní případ nebo ukázku.