GeekFactory

int128.hatenablog.com

Eclipse + Gitで公開リポジトリとプライベートリポジトリを使い分ける

Eclipseのプロジェクトをgithubなどで公開するとき、非公開にしたいファイルが出てくると思います。非公開にしたいファイルを別のリポジトリに分けて管理する方法を説明します。

.gitignoreに書く

.gitignoreファイルにフォルダやファイルを書くと、リポジトリ管理の対象から除外されます。EGitからは、フォルダやファイルを右クリック→ [Team] → [Ignore] で.gitignoreに追加できます。

パスワードが書いてあるファイルなどは.gitignoreで除外するとよいでしょう。

Linked Resourcesを利用する

.gitignoreに書くとリポジトリ管理の対象から除外されてしまいます。まったくバージョン管理しないのではなく、プライベートリポジトリに入れて管理したいものもあるでしょう。その場合は別のプロジェクトを作成し、新たにリポジトリを作成します。

EclipseにはLinked Resourcesという仕組みがあります。これを使うと、プロジェクトフォルダの外にあるフォルダをプロジェクト内にあるように見せることができます。例えば、以下のようにprivateフォルダだけ別のプロジェクトに切り出すことができます。

  • example-app
    • main
      • src
      • test
    • private → WORKSPACE_LOC/example-app-private/private にリンク
      • src (実体は存在しないがクラスパスに追加可能)
      • test (実体は存在しないがクラスパスに追加可能)
    • webapp
      • private → WORKSPACE_LOC/example-app-private/webapp/private にリンク
  • example-app-private
    • private
      • src
      • test
    • webapp
      • private

EclipseでLinked Resourceを作成するには、メニューの [File] → [New] → [Folder] でダイアログを開き、 [Advanced] → [Link to alternate location (Linked Folder)] を使います。[Variables...] で WORKSPACE_LOC を選び、[Extend...] で別のプロジェクトのフォルダを選ぶと、そのフォルダへのリンクが作成されます。

Linked ResourcesはEGitのリポジトリ管理の対象になるので.gitignoreで除外しておきます。gitコマンドを使う限りは問題ありませんが、EGitではコミット対象に表示されてしまうので除外しておくことをおすすめします。

# .gitignore
/private
/webapp/private

example-appプロジェクトはgithubにpushし、example-app-privateプロジェクトはプライベートリポジトリにpushするという運用にすれば、公開リポジトリとプライベートリポジトリを使い分けることができます。

Linked ResourcesについてはEclipse Helpに詳しく書かれています。