版ごとの移行の手順を版の順に当て、写しから戻し、点検してから版を書き換える流れ
mdmark upgrade が、設定・索引・文書を新しい版に合わせる考え方。
手順は 版を上げる。
version から読み、無ければ聞くsteps.yaml を、版の順に読み、形が合うかを確かめる。1 つでも合わなければ何も書き換えないmdmark check と同じ点検を流し、ずれが 0 件のときだけ設定の version を目標の版に書き換える手順を持たない版は飛ばす。
--plan は 3 で止まり、何も書き換えない。
版ごとの migrations/{版}/steps.yaml に、mdmark の開発者が手順を並べる。
手順の種類は次の 5 つ。
| 種類 | 当てること |
|---|---|
rename_key |
設定・索引のキーの名前を変える |
set_default |
設定・索引に無いキーを足す。値は手順に書くか、利用者に聞く |
map_values |
設定・索引のキーの値を、表のとおりに読み替える |
replace_mark |
文書の印を書き換える |
call |
宣言で書けない移行を、同梱のスクリプトで当てる |
どの手順も、既に当たった後の状態に当てても結果が変わらない。
値が失われる手順には壊す印が付き、--yes が無いとき当てる前に確かめる。
設定・索引はコメント・キーの並び・触らないキーの書き方を残して書き換える。
手順の失敗か点検のずれがあると、写しの全てのファイルを元の場所へ戻し、設定の version を変えない。
写しは、設定ファイルのあるフォルダの .mdmark/backup/{日時}/ に残る。
戻す前に止まっても(Ctrl-C など)、設定の version は手元の版のままなので、次の upgrade が同じ手元の版から当て直す。
手順が当て直しても結果の変わらない形のため、当たった手順をもう一度当てても壊れない。
当てた範囲(手元の版より新しく目標の版以下)の変更履歴の行を、手順と一緒に出す。 行は 変更履歴 の表から取る。