IntelliJ IDEA 12 x Mercurial x Bitbucket連携

最近IntelliJを使う機会が増えて参りました。そうなるとやはりDVCSも連携させて使って行きたいところ。という訳で備忘録を兼ねてその辺の内容をメモとして残しておこうと思います。

IntelliJ IDEA導入 (IntelliJ IDEA 12)

下記エントリを元に、2013年01月時点最新のIntelliJ IDEA 12 Community Editionを導入。

Mercurialインストール

下記エントリを元にインストール。

インストール後のバージョン確認。

$ hg version
Mercurial - 分散構成管理ツール(バージョン 2.3)
(詳細は http://mercurial.selenic.com を参照してください)

Copyright (C) 2005-2012 Matt Mackall 他
本製品はフリーソフトウェアです。
頒布条件に関しては同梱されるライセンス条項をお読みください。
市場適合性や特定用途への可否を含め、 本製品は無保証です。
$ which hg
/usr/local/bin/hg
$

プロジェクト用意

今回はこの時のもくもく結果を残そうとして作業過程途中で断念した経緯がありました。

なのでこのエントリでもIDEA12でPlay2.0Javaをやって、Mercurialプラグイン経由でBitBucketにプッシュする、という準備をします。以下はPlayプロジェクト作成してIDEAに取り込むまで。

$ play new todolist
$ todolist (プロジェクト名:そのままでEnter)
$ 2 (Create a simple Java application)
$ cd todolist
$ play
[todolist] $ idea
※IDEAを開き、[Open]で上記作成プロジェクトを選択

連携諸作業

ここからはIDEA上での設定内容確認。[File]→[Other Settings]→[Default Settings]を選択。[Version Control]→[Mercurial]を選択、path欄に上記コマンドで確認した値が設定されている(pathが通っている)事を確認。無ければ設定。


メニュー:[VCS]→[Enable Version Control Integration…]を選択。対象となる(D)VCSを選択し、[OK]押下。(※ここではMercurialを選択)


するとプロジェクト右クリックでコンテキストメニューMercurialが出てくるようになりました。他の(D)VCSも同様の手順で行けると思われ。しかしデフォルトで主要バージョン管理をカバーしてるとは素晴らしいですねぇ、IntelliJは。


[VCS]→[Import into Version Control]→[Create Mercurla Repository]を選択。

[Create Repository…]を選択、[OK]押下。(※Select...でも変わんないかな?)

するとこういう状態になる。

プロジェクトを右クリック→[Mercurial]→[Commit Directory]すると、こうなる。

[IntelliJ IDEA]→[Preferences]→[Version Control]を開いてみると、一応プロジェクトがMercurial管理対象には指定されているようです。


問題はこの後、プロジェクトを右クリックして丸ごと[Add to VCS]しようと思ったのですが出来ません...。

幾つか情報を漁ってみたものの、実現に至るような解決策は見当たらず。ディレクトリ単位での選択もどうやら無効のようです。ファイル単位でなら[Add to VCS]は可能。試しに1つやってみるとこういう感じにファイル名の色が変わります。

今回対象としたのはPlay2.0Javaのプロジェクトなので、公式情報を元に管理が必要そうなフォルダ(内の対象ファイル)をポチポチ選んで行ってAdd。この辺りもしやるとすればコマンドベースでやるとかになるのかな〜。対象ファイル多数Addするのは恐らくは最初の1回だけだろうし、以後は随時追加する形になるだろうし、これはこれで良しとするか。


上記まででAdd to VCSしたファイルがある状態でプロジェクトを右クリック→[Mercurial]→[Commit Directory...]を選択。するとこんな感じで諸々選択設定が出来る画面が出てくる。[Commit]押下。(※Commit and Pushとかも出来るみたいだがここは1歩ずつ)

コミット完了。下の方にこんな吹き出しが出る。

BitBucketへのPUSHを行う。プロジェクトを右クリック、[Mercurial]→[Push]を選択。

Push先のURL等を設定し、[Push]押下。途中パスワードを聞かれるので入力。(※Bitbucketのパスワードともう1種別のパスワード入力を求められたような気がするがその辺若干曖昧だった...)

Push完了。該当のBitbucketリポジトリにアクセスして内容を確認。(下記の内容はプロジェクト作成直後のものなので何の面白味も無いですので悪しからず(´・ω・`))


...よし。これでひとまずはIntelliJでも(D)VCSを連携させた作業も遂行出来そうだ。環境選択の幅が広まって良い感じ。


※この作業の過程で、Twitter上で何人かの御方にアドバイス助言などを頂きました。一応の形ではありますが、手順としてまとめる事が出来ましたのでこの場で御礼をお伝えしたいと思います。ありがとうございました!


追記1:VCS管理対象ファイルの操作について

コメントで以下アドバイスを頂きましたので、その辺りの内容も併せて追記。いまいまさのぶ (TwitterID:@masanobuimai)さん、ありがとうございました!

VCSへのAdd方法ですが、わたしはChangesツールウィンドウから行う方法を好んで使ってます。
"Unversioned Files"から適当なchangeset(通常は"Default")にドラッグ&ドロップすればAddできます。
フォルダごとでもOKです。ただしフォルダを表示させるには、ツールバーの「Group by Directory」をONにしておく必要があります。
たぶん、この方法のほうがお望みのオペレーションに近いんじゃないかと思います。
  • プロジェクト配下をMercurial(なりVCS)対象にすると[Changes]タブが表示される。
  • [Changes]タブ指定→[Group by Directory]アイコンを選択→[Click to browse]リンククリック→コミットしたいファイルなりフォルダを指定→[Move to Another Changelist]をクリック。
  • 移動先のChangelistを[Default]に設定し、[OK]押下。以降[Unversioned Files]ウインドウで連続して追加する事も出来るし...
  • ファイルをドラッグ&ドロップで移動出来るようにもなります。(※どう言ったタイミングでこの操作が行える様になるのかは不明&調査中)
追記2:マスターパスワードについて
  • プロジェクトをコミットする際にリポジトリへのアクセス時ユーザ名/パスワードを設定したあと、
  • スターパスワードを設定する事が出来る。詳しい内容は以下URL等を参照。こちらも@masanobuimaiさんにコメント頂きました。ありがとうございました!
それとVCS連携が設定した状態でIntelliJからファイルを作成すると、都度「VCSにも登録するか?」と聞いてきます。
あと「パスワードを2回...」のもう一方はIntelliJのマスターパスワードじゃないかな?と思います
(パスワードの保存方法に「IntelliJに永続的に保存する」的なのがあるので。
追記3:『Add to VCS』のショートカットについて

当エントリでは”プロジェクト新規登録時、最初にファイルをAdd to VCSするのに手間が掛かる"辺りの部分から派生した内容について展開をしておりますが、こちらのコマンドについてはショートカットが用意されているので、まぁそれを使えばある程度楽なんじゃね?という部分にふと思い立ちました。

御覧のように、デフォルトでは[Option]+[Command]+[A]が割り当てられています。

コマンド実行前。Application.javaはまだAddされてません。

ファイルを選択し、ショートカット実行。

Add to VCS完了。あとはこれを必要なファイル分ガシガシこなせば良し。