git-svnオレオレメモ

インストール

Mac Portsでgitをインストールした場合、git-svnはインストールされていない。
と言うことで、追加インストールする必要がある。

% sudo port install git-core +svn

[参考]MacPortsでgit-svnをインストールする

上記のサイトをみると、すでにgit-coreがインストールされている場合は、git-coreをdeactivateする必要があるらしいが、なぜかボクの場合はOKだった。

SVNリポジトリのチェックアウト

すでに、SVNリポジトリが存在する場合、

% git svn clone [SVNリポジトリ] ./project

これで、ローカルの./projectにプロジェクトがコピーされる。

[参考]Subversionリポジトリと連携できるgit-svn

Gitの使い方

オレオレメモなので、オレが使う分だけ。

コミット

SVNと同じ。

% git commit

とすると、環境変数EDITORで指定したテキストエディタが立ち上がるので、メッセージを記入する。

一つ前のCommitをやり直す。

Commitするファイルを忘れたり、もしくは、多くCommitしすぎた時とかに修正する。
例. 一つ前にCommitしたときにCommitするファイルを忘れた場合

% git add hoge.c hoge.h
% git commit -m "hogeの追加" # あ、Makefileの修正をCommitするのを忘れた。
% git add Makefile
% git commit --amend -m "hoge, Makefileの追加"

その他

いきなりその他w
ま、普段使うコマンド(status, move, rm, etc.)などはSVNとほぼ同じ。

.gitignore

バージョン管理下に置かないようなファイル(典型的には、Cのオブジェクトファイルなど)は、そのファイルが存在しているディレクトリ以下に.gitignoreを置けばいい。

SVNリポジトリへのコミット

Gitでローカルリポジトリにばんばんコミットした後に、適切なタイミングでSVNにもコミットする。

% git svn dcommit

このコマンドを打つと、ローカルにコミットしたリビジョンが全てSVNにコミットされる(SVNのリビジョンが一気にGitのコミット数分上がる)。
ログメッセージも反映される。
正直、複数人でやる場合は、注意が必要そう。

SVNリポジトリとGitローカルリポジトリとの同期

svn updateに相当するもの。

% git svn rebase

Redmineとの連動

試してないけど、git svn dcommitしたときに、gitに対してコミットしたものが一気にSVNにコミットされるので、git commitするときに、Redmineのチケット番号を付けておけば、おそらく連動される。

雑感

Gitでローカルリポジトリを置いておくと、バグトラックがとにかくしやすい。

今の仕事スタイルとして、職場と家でコーディング比率が1:2ぐらいになっていたので、SVNの中央管理だけでは、変更が大きくなりすぎて、SVNで管理するのに適さない。かといって、プロジェクト全体がSVNで走り始めているので、Gitにすることもできない。

そのような場合に、git-svnはちょうどいいソリューションを与えてくれる。

また、gitkが非常に使いやすいため*1、これだけでもGitに移してよかったなぁ、と思える。

*1:なぜかgit diffが暴走する、と言うのがあったけど