JetBrainsのIDEはとても優秀で、職場でこれをつかってコードを書くようになると、家でも使いたくなるものです。

しかし、非常に細かくあれこれ設定できるぶん、設定を再現するのは地味に面倒。家でいろいろ試して便利な設定が見つかっても、職場に反映できてなかったりとかで、微妙に使い勝手が変わってくると面倒です。

でもそこはさすがと言うかなんというか。Gitを使って設定を共有できる機能が用意されていますのでためしてみました。

用意するもの


IDEの設定を行う

まぁ、当たり前ですが、共有すべき設定をまずはどちらか片方の本体で済ませてしまいましょう。
尚、これ移行IDEはPhpStormを使う例で話します。持ってるのがPhpStormなんで。

SettingsRepositoryプラグインをインストール

…と言いたいところですが、このプラグインははじめからバンドルされていてしかもデフォルトで有効化されているらしいので、特に何もする必要はないみたいです。

ただ、IDEの種類やエディションによってはない可能性もあるので、その場合はインストールする必要があります。

 

GitLabCEにリポジトリを作る

GitLabにログインして、右上にある「New project」またはヘッダーバーの「+」→New Project から新しくプロジェクトを作ります
(といってもGitLabはコロコロデザインが変わるんで見ている時期によっては違うかも。スクショは GitLab 10.6.4 時点でのものです)

名前はなんでも良いと思いますがわかりやすいのがいいかと。私は、「phpstorm-settings-repo」ってしてみました。

Visibility Level は Private でOK。自分専用だし。

あとは適当に。全部からでもまぁOKだとおもいます。

完了したらプロジェクトのトップからリポジトリのアドレスを取得します。コピーボタンがあるんでポチッとやっちゃってください

このとき、もしプロトコルが「SSH」になっている場合は、「HTTP」に切り替えてコピーしないと、自分の環境ではうまくいきませんでした。

SettingsRepositoryプラグインの設定

リポジトリのURLをコピーしたら、PhpStormでの作業に戻ります。
まずは設定を済ませてある方から。

設定をリポジトリに送る

プロジェクト開いてる場合は一旦閉じて「Welcome画面」を出します。

右下の「Configure」から「Settings Repository」をクリックするとこんなウィンドウがでてきます。

Upstream URLに、さっきコピーしたリポジトリのURLを入力します。

下に3つ並んだボタンですが、今回は設定をリモートに贈りたいので「Overwrite Remote」をクリックします。

これで現在の設定がリモートに送信されます。きになる場合はGitLab見てみると良いでしょう。

設定をリポジトリから取得する

今度は、設定を同期したい方のPhpStormです。新しい方。

こちらも同じように「Configure」から「Settings Repository」を開き、Upstream URL を入力します。

そして今度はリモートの設定を取り込みたいので「Overwrite Local」をクリックします。

これでリモートの設定が現在のPhpStormに反映されます。

 

ちなみにMergeボタンは、多分その名の通りそれぞれの設定をマージすることになるとおもうんですが怖いので押したことありません。
それにきっとややこしいことになると思うので基本的には片方で全部設定を済ませてそれをコピーするようにするほうが安全かと。

(一応設定値にConflictがあると教えてくれるみたいですが…)

 

同期設定

Welcome画面の右下「Configure」→「Preferences」を押してグローバル設定(Default Preferences)を開きます
(ちなみにプロジェクトを開いてる状態だとローカル設定となり、そのプロジェクトでのみ有効な項目もちょこちょこあるので注意)

「Settings Repository」で検索するか、「Tools」の中にある「Settings Repository」をクリックして、設定画面に入ります。

「Repository」には既に先程設定したリポジトリが書かれてると思うのでそこはそのままでOK。

「Auto Sync」のチェックはチェックしておくとプロジェクトを閉じたり、IDEを終了するタイミングで設定が同期されます。
これをオフにした場合は、手動で更新する必要があります。

手動で更新する場合は、メニューバーの「VCS」→「Sync Settings」から行います。

ちなみに「Read-only Sources」は自分の設定とは別にライブテンプレート(スニペット)やファイルテンプレートなど、共有する任意のタイプの設定を含んだ追加のリポジトリを登録できるようです。
ここに設定したリポジトリから取得したものは上書きやマージはできず、そのまま設定のソースとして利用されるみたいです(なのでReadOnly)

チームなどでライブテンプレートを共有したりするのにつかうのかな?試したこと無いのでなんともわからんです。

 

感想

同期する度コミットが行われるっぽいので、コミット履歴がもりもり増えていきますが、このコミット履歴を辿って過去の設定に戻すみたいな機能はなさそう?
1ヶ所だけで使う場合でも設定のバックアップにもなるので設定しておく価値はあるかも。

参考

コメントする