git svn を使ってみる (Windows 環境構築編)

GitHub のおかげで プライベートでは Git 一色の今日この頃。そろそろ 仕事でも Git を使ってみることに...
分散型リポジトリを使った開発のリズムは非常に心地よく 一度味わってしまうと もう 二度と集中型リポジトリを使った開発には戻れない...

ということで...
仕事でも Git を使いたいと思うのは至って自然な流れではありますが、 色々と大人の事情もあって リポジトリ自体を SVN から Git へ移行するのはそんなに簡単な話ではありません。

と言う訳で git-svn ですよ。

git-svn を使えば、今まで通り SVN を使ってプロジェクトを共有しつつ、ローカルの開発環境では こっそり Git が使えてしまうのです。
自分だけ 分散リポジトリを使っていい感じで開発を行い、すべての準備が整ったら集中リポジトリに push して、他の開発者に公開するなんてことができます。
もちろん、他の開発者は 今まで通り SVN が使えるので、誰にも迷惑をかけることはありません。
git-svn について詳しく知りたい方は 既にたくさんの方が書かれていますので そちらを見てもらうとして...。

では、早速 git-svn を利用するための 環境を構築します。
今回は業務で使うことが前提ですので、OS は もちろん Windows XP SP3 です。

Cygwin のインストール

今回は Cygwin の git を使うことにしました。
理由は Cygwin の git でないと日本語名のファイルがうまく扱えないからです。
もちろん 業務では 容赦なく 日本語ファイル名のドキュメント類も SVN にコミットされているのです。
それらを git-svn で正しく扱おうとすると、現状 Cygwin しか選択肢はないようです。
もし、他にもいいものがあれば ぜひコメントください。

と言うことで...
まずは http://cygwin.com/setup.exe をダウンロードして c:\cygwin 配下におきます。

次にコマンドプロンプトを立ち上げて

c:\cygwin\setup.exe -q -d -D -L -s http://ftp.jaist.ac.jp/pub/cygwin/ -l "%USERPROFILE%\.cygwin" -R c:\cygwin -P gcc,git,git-completion,git-svn,make,vim,wget
を実行すると、勝手に cygwingcc,git,git-completion,git-svn,make,vim,wget がインストールされます。これ結構便利...
gcc,make,wget は この後インストールする cygterm で必要になりますので合わせてインストールしておきます。
また 既に cygwin がインストールされている場合でも 上記のパッケージのいずれかがインストールされていない場合は、同じように実行すれば、インストールされていないパッケージだけインストールしてくれます。

CygTerm のインストール

コマンドプロンプトCygwin を使うと何かと面倒ですので CygTerm をインストールします。
CygTerm があれば putty から Cygwin が使えるので とっても便利です。

スタートメニューから Cygwin を起動して

cd /tmp
wget http://www.dd.iij4u.or.jp/~nsym/cygwin/cygterm/cygterm107.tgz
tar zxvf cygterm107.tgz
cd cygterm107
make
mkdir ~/bin
make install
cd ~
rm -r /tmp/cygterm107
のように実行すると c:\cygwin\home\<ユーザ名>\bin\ 配下に
  • cygterm.exe
  • cygterm.cfg
がインストールされます。
インストールされた cygterm.exe のショートカットを作成して


のように 作業フォルダを c:\cygwin\bin に変更します。
CygTerm の実行には c:\cygwin\bin\cygwin1.dll が必要ですので、 作業フォルダを c:\cygwin\bin にしないと起動できないようです。
代わりに Windows環境変数の PATH に c:\cygwin\bin を追加しても問題ないようですが、ショートカットの方が無難かな...

PuTTY のインストール

個人的には PuTTY ごった煮版 がオススメです。
ここでは PuTTY ごった煮版 のインストール手順を紹介します。
と言っても http://yebisuya.dip.jp/DL/putty-0.60-JP_Y-2007-08-06.exe をダウンロードして実行するだけです。
インストールオプションは基本的にデフォルトで良いと思います。

CygTerm の設定

先ほど起動した Cygwin~/bin/cygterm.cfg

# CygTerm setting

TERM = "C:\Program Files\PuTTY\putty.exe" -load "cygterm" -telnet %s -P %d
TERM_TYPE = cygwin
PORT_START = 20000
PORT_RANGE = 40
SHELL = /bin/bash --login -i
ENV_1 = MAKE_MODE=unix
#ENV_2 = HOME = /home
のように編集してください。

PuTTY の設定

編集したら 早速 先ほど作成したショートカットをクリックしてみてください。
PuTTY が立ち上がるはずです。起動したら 忘れないうちに PuTTY の設定を

- 端末
    - ローカルエコー:強制的にオフ
    - ローカルライン編集:強制的にオフ

- ウィンドウ
  - 変換
    - 文字コードの設定:UTF-8/Auto-Detect Japanese
のように変更して保存しておきます。

Git の設定

最低限 以下の設定はしておいた方がよさそうです。
もちろん、user.name, user.email は 適宜 変更してください。

git config --global user.name bluepapa32
git config --global user.email bluepapa32@bluepapa32.com
git config --global core.safecrlf true
git config --global core.autocrlf true
git config --global core.quotepath false
git config --global log.date local

Git リポジトリの生成

SVN リポジトリ からプロジェクトをチェックアウトして ローカルに Git リポジトリのクローンを生成します。 もし、SVN リポジトリ

http://bluepapa32.com/svn/myproject
|-- trunk
|-- branches
`-- tags
という SVN で奨励されているディレクトリ構成なら とっても簡単です。
git svn clone -s http://bluepapa32.com/svn/myproject
を実行するだけです。
ただ、全てのリビジョンを 1 から順番にエクスポートしていくので、かなり時間がかかります。
可能なら 帰る直前に実行しておくことをおススメします。

Git リポジトリのクローンができたら

cd myproject
git svn show-ignore >> .git/info/exclude
のように実行して、SVN の除外ファイルの情報を取り込みます。

とりあえず、こんな感じで Windows 上の git-svn を使うための最低限の環境を構築することができました。
あとは ガンガン使い倒すだけです。