はじめに
サポンテの現在の職場では、Subversion と Git の両方が使われています。svn コマンドには XML 出力のオプションがあり、git コマンドでも同様の出力を得たいという要件が発生しました。
調べてみると、git log
にそんなオプションは無いようです。そのかわり「--pretty オプションがあるから、好きにしたら良いよ!」という英語のサイトが見つかりました。たしかに...。そりゃそうだ。
XML 出力
svn コマンドが出力する XML のフォーマットに合わせた出力を得るために無理やり一行で書くなら、次のようになるでしょうか。
echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"; echo "<log>"; git log --date=format:'%Y/%m/%d %H:%M:%S' --pretty=format:"<logentry revision=\"%h\"><author>%cn</author><date>%cd</date><msg>%s</msg></logentry>"; echo "</log>"
出力結果
以下のような出力が得られます。
<?xml version="1.0" encoding="UTF-8" ?> <log> <logentry revision="5a87af1"><author>サポンテ</author><date>2024/03/17 14:46:50</date><msg>二回目のコミット。</msg></logentry> <logentry revision="00ee9d9"><author>サポンテ</author><date>2024/03/17 14:28:12</date><msg>最初のコミット。</msg></logentry> </log>
git log の部分だけ解説
%h
... 短いコミットの ID。長いコミット ID にしたい場合は%H
を指定。%cn
... コミット者。%cd
... コミット日時。%s
... コミットの題名。本文も入れたいなら%s%n%n%b
。%n
... 改行。
日付はそのままだと日本式にならないので --date=format:'%Y/%m/%d %H:%M:%S'
を追加しました。