Githubでコミットやブランチやタグ間のdiffを見る、Compare viewを使う

GithubにCompare viewという機能があります。とても便利なんですが、どういうわけかCompare viewへのリンクが見当たりません*1。URLを自分で入力すれば使えるんですが、よく忘れるのでメモしておきます。見落としてました。Branch List(例えばhttps://github.com/cakephp/cakephp/branches)からCompare viewに入れます。コメントで教えてもらいました。futti_kさんありがとうございます。
利用してるコードを更新するかどうか、内容を見てから決めたい時によく使います。git cloneしてるので、コマンドラインからでも比較は出来るんですが、やっぱりGUIのほうが見やすいです。

使い方

リポジトリURL/compare/コミットId or タグ or ブランチ...コミットId or タグ or ブランチ

こんな感じのURLを入力するんですが、正直この書き方だと分かりにくいので、具体例で説明します。例としてCakePHPリポジトリを使います。

とある時点のコミットから最新までを比較

https://github.com/cakephp/cakephp/compare/a0a87ade5ad308c36baf9ede9cf7d96e666acb95...master

比較対象を...で繋ぎます。左側に古いものを、右側に新しいほうを指定します。

タグ1.3.6からタグ1.6.7までを比較

https://github.com/cakephp/cakephp/compare/1.3.6...1.3.7

流石にCakePHPのタグからタグの比較は、コミットが多すぎるのか表示に時間がかかります。

タグ1.3.6からブランチ1.3までを比較

https://github.com/cakephp/cakephp/compare/1.3.7...1.3

タグとブランチの比較も出来ますが、ちょっと注意が必要です。タグはある時点のコミットで固定されているのに対し、ブランチはそのバージョンの開発が続いているならばコミットされ続けています。この例の場合、ブランチ1.3とは1.3系のことであり、今後1.3.8というタグがつくであろうコミットを含んでいます。なのでタグ1.3.7の方が古いです。この辺は、プロジェクトのブランチ・タグ付け方にも寄るかもしれません。

Compare View URLs

We wanted Compare View to be something we could link to from external sites and services anytime we were referring to a range of commits in a git repository. As such, we thought it would be worthwhile to document the basic structure of a Compare View URL:

http://github.com///compare/[...]

Where and are obvious, and and are branch names, tag names, or commit SHA1s specifying the range of history to compare. If is omitted, the repository's default branch is assumed.

https://github.com/blog/612-introducing-github-compare-view

Github blogにこの機能を紹介するエントリーがあります。英語ですが、Compare viewのURLとしてはこんな文法のようです。上記で紹介した組み合わせ以外にも出来る事があるかもしれません。

gistでは使えない

Githubの提供するgistでも出来るかなと思ったんですが、gistではComapre viewは提供されてないようです。検索してみたところ、Greasemonkeyスクリプト拡張機能で何とかしている人がいるみたいです。gistのコードの間違いを直した時なんか、Comapre viewがあればそれを貼るだけで修正した事が一目瞭然で便利そうなんですけどね。

*1:もしかしたら見落としてるだけ?