sonoshouのまじめなブログ

情報系大学生からのウェブ見習い人生の記録

Eclipse と git の連携 ~さくらVPS~

ecliseとgitの連携2 ~さくらVPS~ - sonoshouのまじめなブログ
新しく書きました。(2014年1月22日更新)
既にリモート上にgitリポジトリが既に存在する場合は、
こちらをご参照ください。

リモート上にgitリポジトリが存在しない場合は、
以下の記事が参考になるかと思います。


いつでもプログラム書きたいですよね。
サーバーにgitを構築しましょう。
ついでにeclipseと連携させましょう。

今回はおすすめのリンク集となりそうです。
私が構築するにあたって、いくつか詰まった点があります。
そこを重点的に説明していくつもりです。

\------筆者の環境------\
・さくらVPS1GBプラン
・Cent OS
eclipse 4.2
\----------------------\

この記事は下記リンクを参考にしています。
さくらインターネットをgitの共用リポジトリにする方法 - Dive into the Tech World!

サーバーにgitを構築

私は以下のサイトを見て、gitをインストールしました。
さくらのVPSを改めて使いはじめる 10 -Git、Gitolite、GitHub - アカベコマイリ

アカベコマイリさんのサイトには、毎度本当にお世話になっております。

EclipseにEGitを導入

EGitはGitをEcliseで扱うためのプラグインです。
インストールにあたって、特に難しい点はありません。

  1. Eclipseを起動
  2. ヘルプ - 新規ソフトウェアのインストール
  3. 「追加」
  4. 名前に「Juno」、ロケーションに「http://download.eclipse.org/releases/juno」を入力
  5. 「コラボレーション」から「Eclipse EGit」をチェック
  6. 「次へ」

あとは流れで。

EclipseSSH設定

  1. Eclipseを起動
  2. ウィンドウ - 設定
  3. 一般 - ネットワーク接続 - SSH2

ここで、SSH鍵の設定を行う。
(Macの場合、Eclipse - 環境設定)

gitのプロジェクトを作成

Eclipseで開発しているプロジェクトをGitで管理するやり方です。

サーバー上にgitリポジトリを作成

サーバーにログインし、gitのrepositoriesフォルダ内(プロジェクトを作成する場所)で
「git init --bare --shared=true」を実行。

[git@localhost repositories]$ mkdir TestProject.git
[git@localhost repositories]$ cd TestProject.git/
[git@localhost TestProject.git]$ git init --bare --shared=true

以上です。

gitレポジトリの作成は、git専用に作ったユーザーで行って下さい。
他のアカウントでログインしてgitレポジトリを作成してしまうと、
フォルダとファイルの所有者が他のアカウントとなってしまいます。
他のアカウントで行った場合、クライアントとサーバーで同期を行う際、私の環境では、
error: insufficient permission for adding an object to repository database .git/objects」
というエラーが出てしまいました。

解決するためには、
chownコマンドで所有者を変更して下さい。
例:[chown -R owner:group filename]
参考:error: insufficient permission for adding an object to repository database .git/objects - 604 Error Code Not Found

gitアクセス権限の編集

  1. サーバー上で「/home/user-name/.gitolite/conf/gitolite.conf-compiled.pm」を開く。
  2. 以下のように編集して保存。
%repos = (
  'project-name' => {
    'user-name' => [
      [
        1,
        'refs/.*',
        'RW+'
      ]
    ],
    'R' => {
      'user-name' => 1
    },
    'W' => {
      'user-name' => 1
    }
  }
);

これをやらないと、私の環境では、
R access for TestProject DENIED to ユーザ名
というエラーが出ました。

'user-name'とは、
「/home/user-name/.gitolite/keydir」内のパブリックキーのファイル名でした。
(理解が追いついていないのですが、私の場合はそのようでした。)


ローカルgitリポジトリの作成

  1. Eclipseのプロジェクト・エクスプローラーから関連付けるEclipseプロジェクトを右クリック
  2. チーム - プロジェクトの共用
  3. Gitを選択して、「次へ」
  4. リポジトリーの「作成」を押す。
  5. 名前にプロジェクト名を入力し、「完了」
  6. 「完了」

ローカルgitリポジトリとサーバーのgitリポジトリとの関連付け

ここでは、「msysGit」および「Git for Windows」を使います。

  1. 「msysGit」および「Git for Windows」でローカルgitリポジトリ(~/git/)に移動。
  2. 「git remote add 」で関連付け。

参考までに以下が私の場合です。

hoge@HOGE ~
$ cd ~/git/TestProject/

hoge@HOGE ~/git/TestProject (master)
$ git remote add origin git.sonoshou.jp:TestProject

EGitの操作

<コミット>

  1. プロジェクトを右クリック
  2. チーム - コミット
  3. コミット・メッセージを入力し、(基本的に)ファイル全てにチェック
  4. 「コミット」

<プル>

  1. プロジェクトを右クリック
  2. チーム - プル

<初回のプッシュ>

  1. プロジェクトを右クリック
  2. チーム - リモート - プッシュ
  3. ホストに「ホストネーム」、リポジトリー・パスに「リポジトリー・パス」を入力して、「次へ」
  4. ソース参照(master)と宛先参照(master)を選択して、「Add Spec」
  5. 「完了」

<クローン(リモートとの関連付け)>

  1. ファイル - インポート
  2. Git - Gitからプロジェクト
  3. ホストに「ホストネーム」、リポジトリー・パスに「リポジトリー・パス」を入力して、「次へ」
  4. masterが選択されていることを確認し、「次へ」
  5. ローカル保管場所を確認して、「次へ」
  6. 一般的なプロジェクトのインポートで、「次へ」
  7. 「完了」

「ホストネーム」と「リポジトリー・パス」の設定がうまく伝えられなかったので、
画像を添付しておきます。

※ただし、私の場合です。
 ホストは「user-name/.ssh/config」内でホストを設定しています。

注意点

eclipseの設定によっては、
pull時に、
「現在のブランチはプル用に構成されていません 構成にキー branch.master.merge の値がありません」
と表示される場合があります。

この場合は、Eclipseから、

  1. ウィンドウ - 設定
  2. チーム - Git
  3. 「ユーザー設定」タブから「エントリーの追加」
  4. キーに「branch.master.merge」、値に「refs/heads/master」と入力し、「OK」

これで、eclipseからもpullできるようになります。