Gitのタグ情報を用いてChange Logを簡単に作る

どうも、Qiitaには初めて投稿します、[めったに更新されないブログ](http://lambdalisue.hatenablog.com/)でほそぼそと情報共有をしている有末です。今回は試しにQiitaで書いてみています。

皆様はプログラムの変更を追従するためのChangelogファイルを作成していますか？
プログラム利用者はGitのログなんて確認しないため、新機能を足しても大抵気が付きません。そういう時に役に立つのがChangelogファイルです。これは各リリースごとに「何が変更されたのか？何が追加されたのか？」などを記載する場所として事実上のスタンダードになっています。下記のようなファイルですね

```
### v0.1.15 (Mon Jul 7 20:33:49 2014 +0900)

- Add a way to reopen a gist without using cache (Mon Jul 7 20:32:56 2014 +0900) 85be809

### v0.1.14 (Mon Jul 7 18:42:04 2014 +0900)

- Fixed #29 (Mon Jul 7 18:32:12 2014 +0900) 0dfa117
- Fixed #30 (Mon Jul 7 18:41:08 2014 +0900) ed96f7f
- Merge branch 'issue30' (Mon Jul 7 18:41:26 2014 +0900) f8dad73
- Bump version (Mon Jul 7 18:41:50 2014 +0900) 7418491

### v0.1.13 (Mon Jul 7 18:09:56 2014 +0900)

- Add 'disable_python_client' option (Mon Jul 7 17:36:07 2014 +0900) 023cd8c
- Bump version (Mon Jul 7 18:09:42 2014 +0900) 5d5c521

略
```

とりあえずこの手のファイルを書いておけば、プログラム使用者は「どんな機能が足されたのかな？」などを簡単に知ることができます。

じゃぁChangelog書けばいいじゃんとなるのですが、この手のファイルを書くのはとてもしんどい。コミットメッセージから自動的にChangelogファイルを作成してくれるスクリプトを探してみたのですが余り気に入るものがありませんでした。

そこでコミットをタグ単位でまとめてChangelogっぽくしてくれるスクリプトを作りました。上記例はそのスクリプトで吐き出したものです。以下インストール方法と使い方。

# インストール
wgetかcURLを使っていれば下記ワンライナーでインストールできます。URL短縮に抵抗がある方は下記URLの
代わりに[https://gist.githubusercontent.com/lambdalisue/c4ce6fcdee82fa72d04c/raw/1228631cb7c7f52e446ab790a85625fcfd142565/install_gittag-changelog.sh](https://gist.githubusercontent.com/lambdalisue/c4ce6fcdee82fa72d04c/raw/1228631cb7c7f52e446ab790a85625fcfd142565/install_gittag-changelog.sh)を使ってください。

```sh
$ wget http://goo.gl/vVh6PN -O - | sh
$ curl http://goo.gl/vVh6PN | sh
```

ワンライナーに抵抗がある方は下記の手順を追ってください。

1. `$ git clone https://github.com/lambdalisue/gittag-changelog $HOME/.gittag-changelog`
2. `$ git config --global --add alias.changelog "$HOME/.gittag-changelog/src/gittag_changelog.py"`

# 使い方
Gitのタグ情報を利用するので`git tag`の結果が出力されるレポジトリでのみうまく動きます。なお、丁度いい感じのレポジトリをお持ちでないかたは[vim-gista](https://github.com/lambdalisue/vim-gista)のレポジトリでお試しください。下記、vim-gistaでの結果例です。

```shell-session
$ git tag
v0.1.0
v0.1.1
v0.1.10
v0.1.11
v0.1.12
v0.1.13
v0.1.14
v0.1.15
v0.1.2
v0.1.3
v0.1.4
v0.1.5
v0.1.6
v0.1.8
v0.1.9
```

上記のようにタグが存在していれば`$ git changelog`で標準出力にChangelogっぽいものが出力されます。
なお、`git config --get remote.origin.url`が`git@github.com:lambdalisue/vim-gista`のような形式の場合は各コミットにGitHubのリンクが自動的に加えられます。

```
$ git changelog
### v0.1.15 (Mon Jul 7 20:33:49 2014 +0900)

- Add a way to reopen a gist without using cache (Mon Jul 7 20:32:56 2014 +0900) [85be809](https://github.com/lambdalisue/vim-gista/commit/85be809bbd954dae4ba99ad607ad045d1d1e527a)
- Bump version (Mon Jul 7 20:33:28 2014 +0900) [02ddd7e](https://github.com/lambdalisue/vim-gista/commit/02ddd7e12e913bf7b3dec8546547805fe8a4525c)

### v0.1.14 (Mon Jul 7 18:42:04 2014 +0900)

- Fixed #29 (Mon Jul 7 18:32:12 2014 +0900) [0dfa117](https://github.com/lambdalisue/vim-gista/commit/0dfa11777ea235df695bb7e1674eec296f5cb8be)
- Fixed #30 (Mon Jul 7 18:41:08 2014 +0900) [ed96f7f](https://github.com/lambdalisue/vim-gista/commit/ed96f7faa0e1079a78c8bb60f74111d1e547d2f2)
- Merge branch 'issue30' (Mon Jul 7 18:41:26 2014 +0900) [f8dad73](https://github.com/lambdalisue/vim-gista/commit/f8dad7386e11d0f440cf0bdf75ea77f538ee6773)
- Bump version (Mon Jul 7 18:41:50 2014 +0900) [7418491](https://github.com/lambdalisue/vim-gista/commit/741849115d0d51c3e476b30f7d2e694bf7e82ebc)

略

### v0.1.1 (Wed Jul 2 03:05:18 2014 +0900)

- Change unite strategy (Wed Jul 2 00:19:42 2014 +0900) [bc3422c](https://github.com/lambdalisue/vim-gista/commit/bc3422c8908cd1d75ce5a324241db296ae5a1458)
- Improve documentations for new implementations (Wed Jul 2 03:03:09 2014 +0900) [9532413](https://github.com/lambdalisue/vim-gista/commit/95324138acd6182af7a3e9f8c371ff9a5dd8372c)
- Bump version (Wed Jul 2 03:04:57 2014 +0900) [1c176a9](https://github.com/lambdalisue/vim-gista/commit/1c176a9bbc02519f14aa85f44182e913996822e6)
```

出力は現在のところMarkdownのみに対応しております。僕自体がMarkdown形式以外でChangelogを使うことがないので、他の形式が欲しい方はPull requestなどを送っていただけると幸いです。

下記、Markdownとして表示した場合の例

---

### v0.1.15 (Mon Jul 7 20:33:49 2014 +0900)

- Add a way to reopen a gist without using cache (Mon Jul 7 20:32:56 2014 +0900) [85be809](https://github.com/lambdalisue/vim-gista/commit/85be809bbd954dae4ba99ad607ad045d1d1e527a)
- Bump version (Mon Jul 7 20:33:28 2014 +0900) [02ddd7e](https://github.com/lambdalisue/vim-gista/commit/02ddd7e12e913bf7b3dec8546547805fe8a4525c)

### v0.1.14 (Mon Jul 7 18:42:04 2014 +0900)

- Fixed #29 (Mon Jul 7 18:32:12 2014 +0900) [0dfa117](https://github.com/lambdalisue/vim-gista/commit/0dfa11777ea235df695bb7e1674eec296f5cb8be)
- Fixed #30 (Mon Jul 7 18:41:08 2014 +0900) [ed96f7f](https://github.com/lambdalisue/vim-gista/commit/ed96f7faa0e1079a78c8bb60f74111d1e547d2f2)
- Merge branch 'issue30' (Mon Jul 7 18:41:26 2014 +0900) [f8dad73](https://github.com/lambdalisue/vim-gista/commit/f8dad7386e11d0f440cf0bdf75ea77f538ee6773)
- Bump version (Mon Jul 7 18:41:50 2014 +0900) [7418491](https://github.com/lambdalisue/vim-gista/commit/741849115d0d51c3e476b30f7d2e694bf7e82ebc)

...略

### v0.1.1 (Wed Jul 2 03:05:18 2014 +0900)

- Change unite strategy (Wed Jul 2 00:19:42 2014 +0900) [bc3422c](https://github.com/lambdalisue/vim-gista/commit/bc3422c8908cd1d75ce5a324241db296ae5a1458)
- Improve documentations for new implementations (Wed Jul 2 03:03:09 2014 +0900) [9532413](https://github.com/lambdalisue/vim-gista/commit/95324138acd6182af7a3e9f8c371ff9a5dd8372c)
- Bump version (Wed Jul 2 03:04:57 2014 +0900) [1c176a9](https://github.com/lambdalisue/vim-gista/commit/1c176a9bbc02519f14aa85f44182e913996822e6)

---

これで気軽にChangelogが作れるようになりました。よろしければどーぞ