gitサーバ構築

いままでMac miniのサーバで作業をしていたが、いちいちvncで作業するのが面倒になってきた。デバグはMacBook Airで作業できるようにする。
参考:Macにgitサーバーを構築してgit://(gitプロトコル)でアクセスできるようにする方法 | Macとかの雑記帳
Mac miniの管理者の部分にgitサーバを用意することにした。
Mac miniの通常ユーザから管理者へはssh admin@localhostでログインする。

gitサーバ構築

上記の参考サイトに従って、gitフォルダを作成。

mini:~ admin$ which git
/usr/local/bin/git
mini:~ admin$ cd git

続いて先日からいじっているkindairb用のフォルダを作成。

mini:~/git admin$ mkdir kindairb.git

最後に公開用として--bareを付けて初期化。

mini:~/git admin$ cd kindairb.git/
mini:~/git/kindairb.git admin$ git --bare init
Initialized empty Git repository in /Users/admin/git/kindairb.git/

作業中のをサーバへ関連づけ

続いて通常ユーザのkindairbを、いま作ったgitサーバへ関連づけ。

mini:~/Ruby/kindairb hoge$ git remote add origin admin@localhost:git/kindairb.git
fatal: remote origin already exists.

怒られた…。

mini:~/Ruby/kindairb hoge$ git remote -v
origin	https://github.com/hitode909/kindairb.git (fetch)
origin	https://github.com/hitode909/kindairb.git (push)

originが重複しているから怒られたのですね。
ということで別の名前にする。originminiとでもしておく。

mini:~/Ruby/kindairb hoge$ git remote add originmini admin@localhost:git/kindairb.git
mini:~/Ruby/kindairb hoge$ git push originmini master
/Users/admin/.bashrc: line 3: rbenv: command not found
Counting objects: 1064, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (432/432), done.
Writing objects: 100% (1064/1064), 409.62 KiB, done.
Total 1064 (delta 561), reused 1054 (delta 553)
To admin@localhost:git/kindairb.git
 * [new branch]      master -> master

なぜかエラーがでたけど、ちゃんと動いてそう。

別の場所へclone

mac:Ruby hoge$ git clone admin@mini.riocampos.private:git/kindairb.git
Cloning into 'kindairb'...
/Users/admin/.bashrc: line 3: rbenv: command not found
remote: Counting objects: 1064, done.
remote: Compressing objects: 100% (424/424), done.
remote: Total 1064 (delta 561), reused 1064 (delta 561)
Receiving objects: 100% (1064/1064), 409.79 KiB, done.
Resolving deltas: 100% (561/561), done.

あっという間だった。

mac:Ruby hoge$ cd kindairb/
mac:kindairb hoge$ git log
commit a91c01d41c91fa3cbddbc272a2d85c7ddffcc3c9
Author: hitode909 <hitode909@gmail.com>
Date:   Fri Mar 22 21:00:30 2013 +0900

    Regenerate gemspec for version 2.3.0

commit 74890b39683f9d9d5234c125d5532341e97971a8
Author: hitode909 <hitode909@gmail.com>
Date:   Fri Mar 22 21:00:25 2013 +0900

    Version bump to 2.3.0

commit c357c18b6cc8d43fd1a9a2823febe77dfc469889
Author: hitode909 <hitode909@gmail.com>
Date:   Fri Mar 22 21:00:11 2013 +0900

    kindai改めndl-dl
    
    http://iss.ndl.go.jp/information/2012/

commit 1daed892581aac06c8325ec330c71ea5ee5a428c
Author: hitode909 <hitode909@gmail.com>
Date:   Wed Mar 13 21:06:16 2013 +0900
 :

logもちゃんと見れる。

mac:kindairb hoge$ git remote -v
origin	admin@mini.riocampos.private:git/kindairb.git (fetch)
origin	admin@mini.riocampos.private:git/kindairb.git (push)

関連しているリモートはoriginになるのね。名前は固有では無いということを了解。

git pushしてみる

分からないままkindairbをちょこちょこいじっているので試しにgit pushしてみる。macから、と言っておきながらサーバの利用者アカウントで作業していた。
開発の時にはmasterではなくSpikeやprototypeと名付けられたブランチを使うべきだ(参考:2011-05-28)とのことなのでriocamposSpikeとしています。

mini:~/Ruby/kindairb/lib/kindai hoge$ git remote -v
origin	https://github.com/hitode909/kindairb.git (fetch)
origin	https://github.com/hitode909/kindairb.git (push)
originmini	admin@localhost:git/kindairb.git (fetch)
originmini	admin@localhost:git/kindairb.git (push)
mini:~/Ruby/kindairb/lib/kindai hoge$ git branch
  master
* riocamposSpike

pushする。

mini:~/Ruby/kindairb/lib/kindai hoge$ git push originmini riocamposSpike
Counting objects: 16, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (11/11), 1.34 KiB, done.
Total 11 (delta 7), reused 0 (delta 0)
To admin@localhost:git/kindairb.git
 * [new branch]      riocamposSpike -> riocamposSpike

問題なくうまくいったみたい。

mini:~/Ruby/kindairb/lib/kindai hoge$ git remote show
origin
originmini
mini:~/Ruby/kindairb/lib/kindai hoge$ git remote show originmini
* remote originmini
  Fetch URL: admin@localhost:git/kindairb.git
  Push  URL: admin@localhost:git/kindairb.git
  HEAD branch: master
  Remote branches:
    master         tracked
    riocamposSpike tracked
  Local refs configured for 'git push':
    master         pushes to master         (up to date)
    riocamposSpike pushes to riocamposSpike (up to date)