バージョン管理をsubversionからgitに移行してみた
kaeruspoon関連のソースコードはsubversionでバージョン管理していますが、ウワサのgitを使うことにしてみます。
参考: せっかちな人のためのgit入門
環境はubuntu8.04。まずはgitのインストール。
sudo aptitude install git-core
gitはsubversionみたいにレポジトリがひとつではなく、あらゆる環境で分散して管理します。つまりローカルにもレポジトリが存在することになるので、ノートパソコンを持って飛行機の中でも電車の中でも開発ができるということ。subversionとsvkをくっつけたような感じですね。
とりあえず、ローカル環境でレポジトリを作ります。
cd ~/devel/kaeruspoon
git init
.gitというディレクトリが作られます。
ではkaeruspoonをコミットしてみよう。コミット前にsubversionの.svnディレクトリを削除しておきます。
find . -name .svn -exec rm -fr {} \;
それからコミット。
git add .
と、思ったら
*** Your name cannot be determined from your system services (gecos).
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: empty ident <tsukasa@blue
.(none)> not allowed
なにか怒られた。
どうもコミットする者の名前を登録しておく必要があるらしい。
git config --global user.email "tsukasa@example.com"
git config --global user.name "tsukasa"
気を取り直してコミット
git add .
git commit -m "kaeruspoon commit"
subversionと同様に、-mオプションをつけなければエディタが立ち上がってそこにコメントが書けます。
ぼくの環境ではデフォでnanoがエディタとして選択されたので、~/.zshrcに以下の行を追加してvimを使うように指定しておきました。
export GIT_EDITOR=vim
それからサーバ上にリモートレポジトリを作ります。サーバの環境はdebianなんだけど、微妙にコマンドが違う。なんでだろう。
cd /var/git/kaeruspoon
git init-db
それからローカルに戻って、ローカルのレポジトリをリモートレポジトリに反映させます。
git remote add origin ssh://silver/var/git/kaeruspoon
git push origin master
このpushが、subversionでいうcommitみたいな感じ。
逆にpullコマンドでリモートレポジトリをローカルに反映させることができる。こちらは update か。
webサーバに、ローカルレポジトリを作って、リモートレポジトリの内容を反映させてみよう。
cd /var/www/rails/
git init-db
git clone ssh://silver/var/git/kaeruspoon
これで環境構築は完了。
では開発・コミット・webサーバへの反映の一連の流れをやってみよう。
どこかのソースを修正したあとに
git status
で状態の変化を確認し、
git diff
で実際の変更箇所を確認できる。このあたりはsubversionと同様。
で、ローカルレポジトリへのコミット。
git commit -a
コミットログは
git log
で確認できます。
さて、リモートレポジトリへの反映。
git push origin master
それからwebサーバ上で
git pull origin master
これですべて完了です。