アプリケーションのソースコードのレポジトリにはREADMEとともに
CHANGELOGが置かれてることが良くありますが、
Github-changelog-generator: https://skywinder.github.io/github-changelog-generator/
を使うとGitHubで管理しているレポジトリのchange logを自動で作ることが出来ます。
Github-changelog-generator
https://github.com/skywinder/github-changelog-generatorGithub-changelog-generator by skywinder: https://skywinder.github.io/github-changelog-generator/
インストールはgem
で
$ gem install github_changelog_generator
インストールするとgithub_changelog_generator
というコマンドが使える様になります。
使い方はchange logを作りたいレポジトリをcloneしてきてそのディレクトリに行って、
$ github_changelog_generator
をするだけ。
もしくは適当なディレクトリで
$ github_changelog_generator -u <user> -p <project (repository)>
の様にユーザー名とプロジェクト名(レポジトリ名)を入れると ローカルにそのレポジトリが無くてもchange logが作れます。
ただし、change logを作る際にGitHub APIを使って情報を取ってくるのですが、 そのままだと1時間に60回の制限があるのでちょっとしたレポジトリでも すぐに
Error: GitHub API rate limit exceeded for xxx.xxx.xxx.xx.
というエラーが出て失敗してしまいます。 ので、Access Tokenを作ってこれを回避します。
Github-changelog-generator用にはrepo
にだけチェックを入れてAccess Tokenを作ります。
作ったtokenを
$ github_changelog_generator -t <token>
と言うように-t
で渡してあげるとlimit exceededを回避出来ます。
もしくは
$ export CHANGELOG_GITHUB_TOKEN=<token>
の様に環境変数に設定しておくと自動的に読み込んでくれます。
よく使うなら.bashrcなどに書いておくと便利です。 ただし、dotfiles 的な感じで管理していてそれをPublicなGitHubのレポジトリに入れてる様な場合は 直接書かず、
if [ -r "~/.changelog_github_token" ]; then
source "~/.changelog_github_token"
fi
の様なことを.bashrcに書いて、~/.changelog_github_tokenの中に上のexpot ...
を書いて置きます。
これで.bashrcはdotfilesで管理して~/.changelog_github_tokenの方は dotfilesに入れなければプライベートに管理できます。(.changelog_github_tokenがない環境では無視するだけ。)
これを使って出来上がったものがこちら:
各Releaseとそれの作成日、そしてFull Changelogというリンクがあります。 このリンクは前のReleaseとのdiffの結果のページになっています。
また、IssueやPull Requestがあった場合、 それらが完了した後に作ったReleaseの下にそれらの情報が加えられています。
ぱっと見で分かりやすく整理されています。
一方でGitHubにはもともとReleasesとうい機能があります。
上のHomebrew-fileのRelasesは
ここにある感じ。
各Releaseの作成日とそれへのコメント(隠れてる)と アーカイブがリストされています。
ただし、Homebrew-fileではまだ実際にReleaseを作っていません。
単にvX.X.X
というタグを作ってそれがそのままReleasesに載ってるだけです。
上のページに従って各タグをReleaseにすると そのタグの部分が別表記になり、また、最新版のリリースにはLatest releaseタグが付きます。
Github-changelog-generatorに関しては単にタグのリストを見てるみたいで リリースの作業をしてもしなくても同じ様に情報を取ってくるようです。
Github-changelog-generatorとGitHubのReleasesの違いとしては
- Github-changelog-generator: 各タグ(またはリリース)のコメントは取ってこない
- Release: Issue等へは自動的に結び付けられない
という所。
Github-changelog-generatorの方に関して言うと、 GitHub Flow に従ってアップデートを全てPull Requestで入れていれば すべてのアップデートが表示される事になります。
一方Releaseの所でも各リリースのコメントにIssueとかの番号を入れておくことも出来ます。
自動化、という意味ではGithub-changelog-generatorでやったほうが簡単ですが、 リリースのコメントも入れられる様になれば良いのにな、と。(コマンドのヘルプを見る限りでは無さそうだった)
レポジトリにCHANGELOG.mdがあるとまたそれっぽくなるので CHANGELOGを自分で作ってない場合はGithub-changelog-generatorを使って取り敢えずでも 入れておくと良い感じになると思います。
GitHub Flowに従っていればきちんと意味のあるchange logになるので Github-changelog-generatorを使うのであればGitHub Flowに従うと良いと思います。