Gitを利用して多人数で共同開発がしたい!というときに便利なのがGithub。
オープンソースなら無料で使うことができますが、プライベート(非公開)なリポジトリを作るとなると月額がかかってしまいます。
そこで、さくらインターネットのサーバを利用して、
無料でプライベートな共用リポジトリを構築する方法を紹介します。*1
本文中のexampleは各自サーバーの初期ドメインのID「この部分.sakura.ne.jp」に置き換えて読んでください。
用意するもの
-
さくらインターネットのレンタルサーバ
SSHが使えればおそらく大丈夫なので、ライト*2 スタンダードからマネージドプランまで全てOKだと思います。 - SSHクライアント
参考:SSH について|さくらのレンタルサーバ|さくらインターネット公式サポートサイト - それなりの知識*3
さくらインターネットにGitをインストールする
1.SSHでさくらインターネットのサーバにログイン
PoderosaやTera Termなどでサーバにログインします。
ホストには「example.sakura.ne.jp」の初期ドメインを、パスワード(パスフレーズ)にはサーバパスワードを入力します。
2.ソースを取得してインストール
インストール場所はどこでもいいですが、参考サイトの例にならって/home/example/local/git/にインストールします。
$ cd ~ $ mkdir -p local/git $ wget http://ftp.ntu.edu.tw/ftp/pub2/software/scm/git/git-1.7.6.1.tar.gz $ tar zxvf git-1.7.6.1.tar.gz $ cd git-1.7.6.1 $ ./configure --prefix=$HOME/local/git $ gmake ← 結構時間がかかる $ gmake install
通常ならhttp://kernel.org/からダウンロードするのがセオリーだけど、クラックされて落ちてるらしい*4 ので、http://ftp.ntu.edu.tw/ftp/pub2/software/scm/git/git-1.7.6.1.tar.gzを利用しました。
3.$HOME/local/git/binにパスを通す
パスの記述をするファイルは使用しているシェルによって変わります。僕の場合は「csh」だったので「.cshrc」を編集します。自身のシェルは次のコマンドでシェルを確認できます。
$ echo $SHELL /bin/csh
cshの場合、「.cshrc」にパスを追加します。
$ cp .cshrc .cshrc.bk ← 不安な人は念のため保存 $ vi .cshrc
※viの操作に慣れていない場合は、FTPで.cshrcをダウンロード、編集後、FTPで上書き保存でもかまいません。(このときもバックアップしておくとより安全)
set path = (…いくつかパスが記載されてる…)
という行があるので、カッコ内の最後に半角スペースで前のパスと区切って
set path = (…略… $HOME/local/git/bin)
のパスを追記します。
最後に
$ source ./.cshrc
でファイルを読み込みます。
4.gitが利用できるようになったことを確認する
$ git --version git version 1.7.6.1 ← バージョンが返ればインストール完了です!
意外と簡単でしたね。
次は共用リポジトリの作成です。
おまけ.インストールに使ったソースファイルの削除
いらなくなったソースファイルを削除しましょう。
余計なファイルを削除しないように慎重に!
コマンドで削除するのが怖ければftpで削除したっていーんです!面倒だけど。
※rmコマンドは自己責任でご使用ください
$ rm -rf git-*
rmはファイルやディレクトリの削除コマンド。
-rはディレクトリごと削除のオプション、-fは削除確認をしないというオプションです。*はファイル名、ディレクトリ名を指定する際のワイルドカード – Google 検索です。
つまり、カレントディレクトリにある「git-」で始まるファイル、ディレクトリを確認無しで削除するとコマンドになります。
間違って「rm -rf *」とかやると死ぬ*5 ので絶対やらないこと。
さくらインターネットのサーバに共用リポジトリを作成する
リポジトリへのアクセスはSSHに加え、マネージドサーバプランで利用できるWebDAVでもいけるようですが、WebDAVは設定が面倒なことに加えSSHにはない制限があるらしい*6 ので、SSHで接続することにしました。
1.サーバに共用リポジトリを作成
まず共用リポジトリを置くディレクトリを用意します。僕は/home/example/git/以下に置いています。
取り合えずname.gitというディレクトリに共用リポジトリを作ることにしましょう。
$ mkdir -p $HOME/git/name.git
mkdirでディレクトリを作成します。-pのオプションは中間ディレクトリ*7 も一緒に作成するという意味です。
作成したディレクトリに移動して、共用リポジトリを作成します。
$ cd git/name.git $ git --bare init --share
はい。終了です。
サーバでの作業はたったこれだけ。
name.gitのname部分を変えればいくらでもリポジトリを量産できます^^
ローカルリポジトリに共用リポジトリを登録
1.共用リポジトリのURLをローカルリポジトリに登録する
remote originにサーバに作成した共用リポジトリのアドレスを登録します。
下記のパスの太字部分3箇所をご自身の初期ドメインのIDに置き換えてくださいね。
ssh://example@example.sakura.ne.jp/home/example/git/name.git
$ git remote add origin ssh://[email protected]/home/example/git/name.git ※すでに設定されている場合は下記 $ git config remote.origin.url ssh://[email protected]/home/example/git/name.git
$ git config branch.master.remote origin $ git config branch.master.merge refs/heads/master
次にローカルリポジトリの履歴を共用リポジトリに反映させます。
2.ローカルリポジトリの履歴をpushする
ローカルリポジトリで行ってきた作業の履歴を共用リポジトリにpushして反映させます。
まだ共用リポジトリは空の状態なので、最初のpushはフルパスを指定して行います。
$ git push ssh://[email protected]/home/example/git/name.git master The authenticity of host 'happyquality.sakura.ne.jp (59.106.19.175)' can't be established. DSA key fingerprint is (DSAキー...) Are you sure you want to continue connecting (yes/no)? ⇒ yes と入力しエンター [email protected]'s password: ⇒サーバのパスワードを入力してエンター
1度pushしてしまえば、それ以降
$ git push $ git pull
のみでOKです!*8
おまけ.他の端末でcloneする方法
$ git clone ssh://[email protected]/home/example/git/name.git master
cloneする場合はremote.origin.urlが設定済みなのでそのまま共用リポジトリを利用できます。
さいごに
想像よりとても簡単で驚きました。
あまり知らない方との共同開発の場合はサーバパスワードを教えるわけに行かないのでgithubのほうが向いていますが、社内や信頼できるパートナーとの共同作業にはこの方法の方が手軽で向いていそうですね。
さいごに、参考にさせていただいた下記サイトに感謝いたします。有益な情報をありがとうございました!
参考サイト:
2010-02-19 – Dive into the Tech World!
院生活備忘録: sakuraサーバでgit