CORESERVERに共同開発用のリモートリポジトリをつくる(Mac編)

POSTED: Nov 27, 2009, 1:12 pm
TAGS: ,

CORESERVERに共同開発用にgitのリモートリポジトリを構築。CORESERVERでホストするくらいのサービスの場合、本番用、開発用も一緒に作れちゃうから便利。

CORESERVERに鍵認証でSSH接続
まずSSHでわざわざパスワードを毎回打つのも鬱なので、鍵認証します。

CORESERVERにsshで接続。

MacBook-Pro $ ssh ユーザー名@ サーバー番号.coreserver.jp

下ごしらえ。

coreserver $ mkdir .ssh
coreserver $ mkdir chmod 700 .ssh
coreserver $ cd .ssh touch authorized_keys

次はMac側(クライアント)でSSH公開鍵を作成。

MacBook-Pro $ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/ユーザー名/.ssh/id_rsa): Enter
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter

scpで公開鍵ファイルをCORESERVERへコピー。

MacBook-Pro $ scp /Users/ユーザー名/.ssh/id_rsa.pub ユーザー名@サーバー番号.coreserver.jp:~/.ssh

authorized_keysファイルにid_rsa.pubの内容を加える。

coreserver $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

これでひとまず完了。細かいところはおのおの設定すれば良いと思います。

リポジトリ作成作業
ここからリポジトリを作る作業です。(gitのインストールは前回の「CORESERVERにgitをインストール | blog.hereticsintheworld」を参照)

まずローカルで開発中のディレクトリにリポジトリを作成。

MacBook-Pro $ mkdir myapp
MacBook-Pro $ cd myapp
MacBook-Pro $ git init
MacBook-Pro $ git add .
MacBook-Pro $ git commit -a -m "1st commit"

これでリポジトリが完成。

サーバー側に受けになる空のリポジトリを作成する。ここではreposディレクトリを作って、その中に入れてみる。

coreserver $ mkdir ~/repos
coreserver $ mkdir ~/repos/myapp.git
coreserver $ cd ~/repos/myapp.git
coreserver $ git --bare init

空のリポジトリが完成。

サーバー側にpushする。

MacBook-Pro $ git remote add origin ssh://ユーザー名@サーバー番号.coreserver.jp/virtual/ユーザー名/repos/myapp.git
MacBook-Pro $ git push origin master

これで先ほど作った空リポジトリにpush完了。

さて、ここで別の開発者も出現。

iMac $ git clone ssh://ユーザー名@サーバー番号.coreserver.jp/virtual/ユーザー名/repos/myapp.git

サーバー側のリポジトリをコピー。

ひとまず環境はできあがりです。
あとは他サイトをみながらcommit、push、pullしまくるだけ。

実際にアブケーションを稼働させてテストしたい場合はCORESERVERの公開ディレクトリへリポジトリをcloneしてやる。

coreserver $ cd ~/public_html
coreserver $ git clone ~/repos/myapp.git

reposにある程度たまったら、テスト環境で動作させてみるみたいな感じになる。
テスト環境をアップデートするには

coreserver $ git pull

するだけ。
でもこの作業は git の hook を使うことによって自動化できます。
自動化についてはまた後のエントリで。

ということで、結局CORESERVERでもそうじゃなくてもやることは変わらないですね。

参考
お世話になったサイト。