ServersMan@VPSでgitサーバを構築する


このwordpressも動かしてるServersMan@VPSをgitサーバ化したのでその方法をメモ書き

svnとgitで迷いましたが、svnにすると、コミットの度にサーバにアクセスしなければならないので、若干面倒になってしまうのと、単純に分散リポジトリ管理を再勉強しようと思った為です。
また、githubを使わない理由としては、privateなリポジトリを無料では作成できないため、個人的な、外部公開しづらいソースを管理するために使おうと思ったためです。

なので、逆にpublicなものはgithubも使っていくつもりなので、基本的にこっちで作成するリポジトリは個人+αでprivateに使う程度を前提に考えて構築しています。


なお、行った環境としては、ServersMan@VPSをサーバ(リモートリポジトリ)にして、ubuntuマシンをクライアントとしています。
クライアント上で細かいコミットをローカルで、1区切りごとにサーバサイドにpushするという流れで行うつもりです。

リポジトリ追加+gitインストール

ServersMan@VPSのデフォルトであるCentOS5では、標準リポジトリ内のgitが古いので、rpmforgeのリポジトリを追加してそちらからインストールします。

# yum install yum-priorities
# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
# rpm -ivh rpmforge-release-0.5.2-2.el5.rf.i386.rpm
# yum update
# yum install git

git初期設定

サーバ(VPS)サイド

VPS上にリポジトリを管理行うためのディレクトリを作成、gitの管理下に設定します。

# mkdir /var/git/myapp.git
# cd /var/git/myapp.git/
# git --bare init

クライアント(ubuntu)サイド

こちらにもgitが入っていないので、インストールします。

$ sudo apt-get install git

コミットテスト

実際にうまくコミットできるかのテストを行います。
まず、gitのリモートサーバリポジトリの指定設定を行います。

$ git remote add server ssh://[email protected]/var/git/myapp.git

その後、クライアント側でローカルリポジトリ作成→コミット後、サーバ側にpushします。
今回は、touchコマンドでテストファイルを作った後、コミット→pushします。

$ cd git
$ touch sample
$ git add sample
$ git commit -m "sample file add"
$ git push server master

この時、先ほどsshで設定したユーザにディレクトリの権限がないと、エラーで弾かれます。
私は最初に一回、やってしまいました。

$ git push server master
fatal: '/var/git/myapp.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

別端末からのリポジトリの取得

今回設定した端末以外に現在のリポジトリをコピーして、利用する際の設定を行います。なお、この別端末ではgitはすでにインストール済みの状態から作業を行います。

$ mkdir myapp
$ git clone [email protected]/var/git/myapp.git myapp

これでディレクトリmyappにリポジトリのコピーが作成され、編集可能となりました。
あとは、コミット時は、テストコミットと同様に、別の箇所で操作した内容を反省させるには、git pullで取得します。

$ git pull server master

まとめ(?)

VPSを借りた時点で、リポジトリ管理に使おうとは考えていたのですが、wordpressの方やらその他のことでコードを書くことも少なかったので、放置気味でしたがとりあえずリポジトリだけでもと思い、今回作成して覚え書き程度に作成内容をメモしました。
とりあえず、今いくつか作りたい物の構想はあるので、それのコード管理に使いつつ、モノ自体を作成していきたいと思ってます。

参考リンク


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください