gitを使うためにCygwin環境を整えた

「えー!マジーSubversion!? svnが許されるのは小学生までだよねー!(キャハハ」*1


とかいじめられるので、そろそろgitを使おうかなーとmsysgit入れてみたんだけどgit-svnとか文字エンコーディングとか色々はまったのでCygwin環境をこしらえてみた。


個人的には、コマンドが使いたいだけならmsysとかGnuWin32 Toolsでいいし、Linux環境が欲しいなら仮想マシンとか用意するし、中途半端な環境はいらんって考えなんだけど、なかなかそうもいかないってことで。

とりあえずCygwinを入れる

とりあえず普通にCygwinを入れて.inputrcとか.bash_profileとかお約束の設定を済ませる。
いつのまにか標準でUTF-8環境になったのねー。

CygTermでターミナル経由にする

vimは大事だよねー、ってことで普段から使ってる.vimをコピったもののcmd.exeやckwではカラーを中心に残念な感じだったので、CygTermを使ってPuTTY経由で使えるようにしてみた。


本当はソース落としてきてCygwin上でコンパイルすべきなんだろうけど、丁度手元にTeraTermもあるので同梱されてるCygTermをコピって使うことにしたw
実はここで少しハマったんだけど、どうもcygterm.exeとcygterm.cnfはCygwin環境下の/binに置かないといけないっぽい?
最初別の場所に置いてたんだけど、SHELLをどう設定してもファイルが見つからないとか怒られちゃうんだよね。


2010-03-17 20:55追記
実行時ディレクトリがCygwinの/bin(C:\cygwin\binとか)になってれば、どこに置いても大丈夫みたい。


cygterm.cnfの設定内容はこんな感じ。

TERM = C:\apps\PuTTY\putty.exe -load "cygterm" -telnet %s -P %d
TERM_TYPE = xterm-256color
PORT_START = 20000
PORT_RANGE = 40
SHELL = /bin/bash --login -i
ENV_1 = MAKE_MODE=unix
ENV_2 = HOME=/home/pasela

TERMはお好みのターミナルソフトに合わせて設定する。ENV_xもお好みで設定する。
設定内容はhttp://www.dd.iij4u.or.jp/~nsym/cygwin/cygterm/を見ればわかるかと。どういう仕組みで動くのかもわかるよ!


んで、上記ではPuTTYを使うので、今度はPuTTY側の設定で"cygterm"っていうセッションを作っておいてやる。名前は-loadで指定するものに合わせれば何でもいいんだと思う。たぶん。
こいつの設定内容としては、

ホスト 127.0.0.1
接続タイプ Telnet

といった感じ。あとはお好み。自分はvimで256カラーを使いたかったので端末タイプをxterm-256colorにした。
あとググった感じだとローカルエコーを「強制的にオフ」にしないと表示がおかしくなるようなことが書かれてたりしたけど、「自動」のままで特に問題なかった。


こんな感じで環境設定してcygterm.exeを実行するとターミナルソフトが立ち上がってCygwinのシェルに繋がる。
あ、cygterm.exeはCygwinの/binに入れるけど実行は普通にWindowsから行って問題ない。ショートカットとか作っとくといい。

msysGitから設定をパクる

git自身の設定は好きにするとして、msysgitだとbashプロンプトにブランチの名前が表示されてて便利なのでそれをもらってくる。


msysgitの/etc/profileの最後の方にある

PS1='\[\033]0;$MSYSTEM:\w\007
\033[32m\]\u@\h \[\033[33m\w$(__git_ps1)\033[0m\]
$ '

という箇所を自分の.bash_profileとかにコピーする。
で、この中で使われてる__git_ps1はどこかというと、msysgitではgit-completion.bashというbashの補完設定ファイルに入ってるんだけど、こいつはCygwin版のgitで既に提供されているので、bash-completionを有効にしてやるだけでよい。(thx! id:bleis-tift)
.bashrcの中に/etc/bash_completionを読み込むところがコメントアウトされてるので、そこを有効にすればよいかと。


2010-03-17 23:32追記
別のマシンで同じ環境構築してたらCygwinのsetupにgit-completionというのがあった。
これを入れないとだめかも?

.gitconfig

模索中

*1:たぶんこの次に「えー!マジーWindows!?(ry」がくる。