Co to znamená
majordomus init vytvoří .ai/. Pokud již existuje, init odmítne s kódem 15 a řekne to. Neexistuje příznak, který cokoli přepisuje: --extend přidá, co v kostře chybí, a nic nepřepíše, takže politika, profil nebo pravidlo, které repozitář upravil, zůstává přesně tak, jak je, a .ai/local/state/, kde žijí záznam úlohy, rozhodnutí, otevřené otázky, předávky a kniha, žádný běh init nikdy nepřepíše.
Repozitář, jehož projektová data stále žijí pod .majordomus/, tedy v rozvržení před .ai, je rovněž odmítnut, s uvedením majordomus migrate jako cesty vpřed; init nevytváří druhé rozvržení vedle prvního.
Princip
lib/init.sh vyřeší rozvržení dříve, než cokoli zkopíruje z share/skeleton/. Na rozvržení .ai bez --extend odmítne; s --extend se každý soubor kopíruje jedním pomocníkem, který se vrátí bez zápisu, pokud cíl existuje, a vypíše, co vytvořil. Ignorovací řádek .ai/local/ se do .gitignore přidá jednou, jak často init běží.
Jak to vidět
majordomus init
majordomus init # majordomus: .ai/ already exists in … (use --extend to add what is missing; nothing is overwritten)
echo $? # 15
rm .ai/repo/workflows/plan.md
majordomus init --extend # created .ai/repo/workflows/plan.md, and nothing else changedCo nepokrývá
--extend obnoví soubor, který kostra dodává a repozitář smazal, což je správná odpověď pro chybějící soubor a špatná pro soubor smazaný záměrně; smazání, které má platit, je projektové rozhodnutí k zaznamenání, ne něco, co init může vědět.
Proč existuje
Čtyři dozorové nástroje ve zdrojovém prostředí byly nainstalovány, běžely dny a byly opuštěny; jedním z důvodů bylo, že přeinstalování čehokoli tiše vynulovalo to málo stavu, který měly.