#環境非依存化したもの
@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 |
便利だなー