Markdown の更新履歴をブラウザで見比べる `mo-git-history` を作った

@k1LoW さんの作った Markdown ビューアー mo は複数のファイルをグルーピングして閲覧することができます。

この機能があるのを知って、左のタブを選択する毎に仕様書等のマークダウンの履歴を辿れたら変更箇所を確認しやすいんじゃないかと思い、実験的実装として mo のラッパーのbash スクリプトを作ってみました。

 

何ができるのか

例えばこんな感じで使います。

./mo-git-history docs/spec.md

すると次の順番で mo にファイルが渡されます。

  1. 現在の作業ツリー上のファイル
  2. 直近のコミット時点の内容
  3. それ以前のコミット時点の内容

つまり、1 つの仕様書が新しい順に並んだ状態で開けます。 「最近どう変わったか」をざっとたどるのに向いています。

 

インストール

本体は、単一のBashスクリプトなので、Pathの通った場所に置いて実行権限を付けるだけです。

次の例は、/usr/local/binに、mo-git-historyをダウンロードして実行権限を付けています。OS環境に合わせて読み替えてください。

$ sudo curl -o /usr/local/bin/mo-git-history https://raw.githubusercontent.com/smeghead/mo-git-history/refs/heads/main/mo-git-history
$ sudo chmod +x /usr/local/bin/mo-git-history

仕様とか

やっていることはかなり単純です。

まず、対象ファイルに対して git log を実行し、そのパスに紐づくコミット一覧を取得します。 次に、それぞれのコミットについて git show <commit>:<path> でファイル内容を取り出します。

過去のファイルは作業ディレクトリには存在しないので、一時ディレクトリを作って、そこに復元した内容を書き出します。 その一時ファイル群を mo --foreground にまとめて渡して起動します。

--foreground を使っているのは、mo の終了をラッパー側で待てるようにするためです。 終了を検知できれば、一時ファイルを片付けられます。

 

まとめ

mo-git-history は、Markdown ファイルの Git 履歴を mo で連続表示するための小さなラッパーです。

思い付きで実験的実装をしてみたものです。既に同じことするツールがあるかもしれません。あったら教えてください。

9件のピンバック

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください