LoginSignup
136
130

More than 5 years have passed since last update.

一日のGitコミットをMarkdownに変換するワンライナー

Last updated at Posted at 2013-08-07

環境非依存化したもの

@suin さんの協力により環境非依存になりました(zshとbashで動作確認)

echo "$(PROJECT=$(url=$(git config remote.origin.url) && url=${url#*github.com?} && echo ${url%.git}) && echo "hash | title" && echo "-----|------" && git log --since='12 hours ago' --author=$(git config user.email) --pretty="format:[%h](https://github.com/$PROJECT/commit/%h) | %s" | perl -nle "\$_ =~ s|#(\\d+)|[#\\1](https://github.com/${PROJECT}/pull/\\1)|g; print \$_")" | pbcopy

一応これが完成形ですが、ここまでくると一つのスクリプトファイルにした方がよさそうな気がしますね。

(追記ここまで)


日報みたいなものを毎日書くことにしているんですが、そこにその日のコミットログを書いておくと便利だと気が付きました。

GitHubリポジトリが github.com/yuku-t/hoge にあり、authorにYukuという文字列を含むとします。

git log --since='12 hours ago' --author=Yuku --pretty='format:[%h](https://github.com/yuku-t/hoge/commit/%h) | %s' | perl -nle '$_ =~ s|#(\d+)|[#\1](https://github.com/yuku-t/hoge/pull/\1)|g; print $_'

これ実行すると

[abcdef](https://github.com/yuku-t/hoge/commit/abcdef) | コミットタイトル
[123456](https://github.com/yuku-t/hoge/commit/123456) | Merge pull request [#1](https://github.com/yuku-t/hoge/pull/1)

みたいなのが標準出力されます。コミットのハッシュとPullRequestのマージコミットの場合はそれに対するリンクも作成しています。

簡単にここで使ってる git-log のオプションについて説明するとこんな感じ。詳しくは man git-log 参照。

名前 説明
--author コミットした人で絞込み
--since コミット日時で絞込み
--pretty 出力される内容を変更

でIncrementsでは Qiita:Team を使っているので、Qiita Markdownのテーブル記法を使うようにワンライナーをちょちょっと改造する(pbcopy コマンド使ってるのでMac限定)

echo '
hash | title
-----|------' > tmp; git log --since='12 hours ago' --author=Yuku --pretty='format:[%h](https://github.com/yuku-t/hoge/commit/%h) | %s' | perl -nle '$_ =~ s|#(\d+)|[#\1](https://github.com/yuku-t/hoge/pull/\1)|g; print $_' >> tmp; pbcopy < tmp; rm tmp

これを実行すると以下の内容がクリップボードに入る

hash | title
-----|------
[abcdef](https://github.com/yuku-t/hoge/commit/abcdef) | コミットタイトル
[123456](https://github.com/yuku-t/hoge/commit/123456) | Merge pull request [#1](https://github.com/yuku-t/hoge/pull/1)

で、これをそのままMarkdownとして解釈させれば下記のようなテーブルになると

hash title
abcdef コミットタイトル
123456 Merge pull request #1

便利だなー

136
130
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
136
130