Co to znamená
Změna stromu je plnohodnotná událost. majordomus context affected čte sadu změn z gitu — pracovní strom proti HEAD, index (--staged) nebo základní ref (--base <ref>), s detekcí přejmenování — a pojmenuje, čeho se dotýká: změněný dokument a každý dokument rozlišený pod jeho rozsahem, přesun s původem, který se změnil, a identitu, která se souborem putovala, smazání, manifest (každý dokument), politiku (projekce) a každý dokument, jehož pathspecy tracks pokrývají změněnou cestu. majordomus context check-sync spustí validaci, pak každou projekci, kterou politika jmenuje, proti jejímu vlastnímu razítku a nakonec stejnou zprávu o dopadu.
Princip
mj_ctxd_affected v lib/context_docs.sh čte git diff --name-status -M pro zvolenou sadu změn plus nesledované soubory, porovná každou cestu s načteným stromem a hlásí běžným formátem nálezů. Změna sledovaného zdroje je WARN pojmenovávající dokument, pathspec a změněné soubory a nikdy návratový kód: nástroj nemůže rozhodnout, zda text stále popisuje kód, takže pojmenuje, co revidovat, místo aby vyžadoval úpravu. check-sync skončí kódem 10, když strom neprojde validací, 11, když projekce už neodpovídá svému razítku (stale-projection), a jinak 0; chybějící projekce je nález doctor, ne drift.
Jak to vidět
majordomus context affected # the working tree against HEAD
majordomus context affected --base origin/master # everything since the base
majordomus context check-sync --json # one finding per lineCo nepokrývá
Neexistuje žádný generovaný index ani lock soubor: odpověď se při každém volání počítá z gitu a stromu, takže nic nemůže zastarat a nic se nemusí přestavovat. Nástroj nerozhoduje o sémantickém driftu v textu; hlásí, kam se podívat.
Proč existuje
Hierarchie, kterou nikdo po přesunu či přejmenování znovu nekontroluje, je hierarchie, která lže o tom, co kde platí. test/cases/70_context_impact.sh a test/cases/71_context_sync.sh dokazují, že každý druh změny se hlásí, že nesouvisející změna je ticho a že sémantický no-op není drift.