26
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RubyMineAdvent Calendar 2014

Day 17

RubyMineで簡単に行ごとのコミットログを見る方法 (Annotate,Blame)

Posted at

ソースコードを読んでいると、このコードはどういう背景で書かれたんだろう?と思うことってよくありませんか?そんな時にそのコードを誰がどのような理由で書いたか(あるいは修正したか)をさっとコミットログで確認できると便利ですよね。

そんな時、私がRubyMineでコミットログを見ている方法をご紹介します。

前提

この機能はバージョンコントロール管理下にあるファイルのみに有効です。
RubyMineでは Subversion (SVN), Git, CVS, Perforce に対応しています。

実はAnnotateをONにするだけ

RubyMine内のエディターでcommand + shift + a で "annotate" と入力します。
すると下の画像のように機能が絞り込まれるハズなので ( "ann"だけでも十分絞り込まれます)、Enterキーを押してAnnotate機能をONにします。(下の画像はRubyMine7のもので、ちょっと見た目が変わっていますが、RubyMine6でも利用可能です)
Annotateを OFFにするにはもう一度同じアクションを実行してください。

"command + shift + a"についてはこちらを参照。RubyMineで覚えておきたい、たったひとつのショートカットキー

README_md_-guide_railsgirls_github_com-___development_railsgirls_guide_railsgirls_github_com.png

簡易ログの表示

AnnotateをONにすると、このようにエディターの左側に行ごとの簡易ログが表示されます。
どの行がどのコミットで変更されたか、gitの簡易ログ(ハッシュ、日付、author)が表示されていますね。さらにカーソルを当てるとコミットログも見ることができるので、コミットログにしっかりとそのように修正した理由が書かれていると、調べ物がはかどります。(なので、コミットログにはできるだけ何をしたかよりは、なぜそのようなコミットをしたかがわかる手がかりを残しておきたい...自戒)

README_md_-guide_railsgirls_github_com-___development_railsgirls_guide_railsgirls_github_com.png

コミットファイルの表示

さらにその Annotate部分をクリックすると同じコミットで他のファイルにどのような変更が加えられたのかが分かります。
(下の例は先程とは別のコミットですが、この場合 index.htmlの他に複数のファイルが変更されている事が分かります。ちなみにファイル名が緑色のものは追加、青色は変更、灰色は削除)
Paths_Affected_in_Revision_5ea3271.png

ファイルdiffの表示

もちろんファイル名をダブルクリックすると diffを見ることができます。
_Users_aki__development_railsgirls_guide_railsgirls_github_com_index_html.png

この機能はRubyMineでしか使えないの?

いいえ。じつはこれは VCS(バージョン管理システム)の機能を使っているだけなんです。代表的な例としてGitコマンドを紹介します(SVNも同じサブコマンド名です)。

Gitの場合

$ git annotate <ファイル名>

もしくは

git blame -c <ファイル名>

で同様の出力が得られます(もちろんCUIベースの表示になりますが...)。
※ちなみに "git annotate"は git blameとほぼ同じ下位互換機能で他のSCMのコマンド名に似せるために用意されているようです。

1__git_blame_-c_README_md__git_.png

Tig の場合

もちろん tig でも表示可能です。
tigの場合はカーソル移動してEnterするとコミットの詳細情報(git show)も表示してくれます。

tig blame <ファイル名>

1__tig_blame_README_md__tig_.png

GitHubの場合

ちなみにGitHubでもこの機能は提供されていて、こんな表示になっています。
railsgirls_github_com_README_md_at_master_·_railsgirls_railsgirls_github_com.png

ファイル表示している状態で Blameボタンを押すと...

railsgirls_github_com_README_md_at_master_·_railsgirls_railsgirls_github_com.png

git blameした状態を見ることができます。

さいごに

あくまでもそのコード、コミットの背景を調べるために簡単にコミットログを見る方法としてご紹介しました。
「誰だよこのコード書いたのは...」的な犯人探し用途での使用はオススメしません。
そのコードが書かれた背景がより素早くわかると嬉しいですね。

26
23
0

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
26
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?