前々から、CygwinでGitの環境作りたいと思ってたのですが、丁度id:kaorun55さんの一言もあり環境を作ってみました。的なメモです。
Windows で git は難しいのぅ。
http://d.hatena.ne.jp/kaorun55/20100419/1271687871
#だれかCygwinでの環境構築をまとめてくれないかなぁ。。。
Cygwinのインストール
まずは、 http://www.cygwin.com/ から setup.exe をダウンロードします。
setup.exe を起動したところから、ポイントだけ説明することにします。
インストール先
今回はデフォルトの C:\Cygwin にします。
「All Users」にするか、「Just Me」にするかはお好みでどうぞ。
環境設定
Gitの設定
Gitインストール後の各種設定 - タイトルは未定と同じようにユーザ名、メールアドレス、ターミナルの色付けを設定します。
$ git config --global user.name "nakaji" $ git config --global user.email "nakajixxx@example.com" $ git config --global color.ui "auto"
自動補完の設定
ここでは、Gitだけでなく他のコマンドの補完も有効にする設定を行っています。Gitのみ補完を有効にすることもできるみたいです。詳細は「bear.mini : Cygwin の git で自動補完(git-completion)を使う方法(+ おまけ)」を参照してください。
.bashrcにある下記コメントを外します。
# case $- in # *i*) [[ -f /etc/bash_completion ]] && . /etc/bash_completion ;; # esac
コメントを外したら、コンソールを起動しなおすか、下記コマンドを入力して.bashrcの内容を再取込させます。
source ~/.bashrc
日本語表示
msysgitでは以下のエントリにあるように設定が必要でしたが、Cygwin版では特に必要ないようです。
Gitでの日本語表示対応(msysgit編) - タイトルは未定
エディタの設定
Cygwinに入っているviを使おうとしたのですが、「bash: /usr/bin/vi: Permission denied」と怒られるし、chmodしても「/usr/bin/vi: /usr/bin/vi: cannot execute binary file」なんていわれるので諦めてました。(見限ったともいう)
そんなわけで、id:terurouさんに教えてもらった「Vim UTF-8 日本語版 - fudist」を使えるようにします。
動作確認
git単体での動作は問題ないと思うので、git svnが動くか以下のように確認を行い問題ないことを確認。
#Subversionリポジトリの作成 $ mkdir ~/svn_repos $ cd ~/svn_repos $ svnadmin.exe create . #作業用ディレクトリの作成 $ mkdir ~/work $ mkdir ~/work/svnwork $ mkdir ~/work/gitwork #Subversionへコミット $ cd ~/work/svnwork $ svn checkout file:///home/nakaji/svn_repos/ Checked out revision 0. $ cd svn_repos $ echo aaaa > file1.txt $ svn add file1.txt A file1.txt $ svn commit -m"initial" Adding file1.txt Transmitting file data . Committed revision 1. #Gitへsvn cloneする $ cd ~/work/gitwork $ git svn clone file:///home/nakaji/svn_repos/ Initialized empty Git repository in /home/nakaji/work/gitwork/svn_repos/.git/ A file1.txt r1 = cfc8e1cbae08d7fbd7670e188baebb1d28f5cf09 (refs/remotes/git-svn) Checked out HEAD: file:///home/nakaji/svn_repos r1 #Gitからsvn dcommitする $ cd svn_repos/ $ ls file1.txt $ echo eeee>>file1.txt $ git status # On branch master # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: file1.txt # no changes added to commit (use "git add" and/or "git commit -a") $ git commit -a [master 436f30a] テストです 1 files changed, 1 insertions(+), 0 deletions(-) $ git log commit 436f30a1fab5f2b4b48d06459baccba99041067b Author: nakaji <nakajixxx@example.com> Date: Tue Apr 20 13:43:13 2010 +0900 テストです commit cfc8e1cbae08d7fbd7670e188baebb1d28f5cf09 Author: nakaji <nakaji@5f6ef47a-4c36-11df-b828-59ce81dbaaca> Date: Tue Apr 20 04:42:04 2010 +0000 initial git-svn-id: file:///home/nakaji/svn_repos@1 5f6ef47a-4c36-11df-b828-59ce81dbaaca $ git svn dcommit Committing to file:///home/nakaji/svn_repos ... M file1.txt Committed r2 M file1.txt r2 = 25011d00a2f8df0ca25a2476a77345f95ef17410 (refs/remotes/git-svn) No changes between current HEAD and refs/remotes/git-svn Resetting to the latest refs/remotes/git-svn #Subversion側で確認 $ cd ~/work/svnwork/svn_repos/ $ svn update U file1.txt Updated to revision 2. $ svn log ------------------------------------------------------------------------ r2 | nakaji | 2010-04-20 13:44:26 +0900 (Tue, 20 Apr 2010) | 1 line テストです ------------------------------------------------------------------------ r1 | nakaji | 2010-04-20 13:42:04 +0900 (Tue, 20 Apr 2010) | 1 line initial ------------------------------------------------------------------------ $ cat file1.txt aaaa eeee
その他
追記(4/20)
早速追記しますw
gitkを使えるようにする
gitkやgit-gui等のGUIツールですが、gitkは下図のように過去の歴史を参照するのに超便利なのでインストールします。
インストールするのは先ほどのCygwinのsetup.exeから「gitk」を選択するだけ。
で、Cygwinのターミナルから実行しようとすると以下のようなエラーになってしまいます。
$ gitk /usr/bin/gitk: line 4: /usr/bin/wish: Permission denied /usr/bin/gitk: line 4: exec: /usr/bin/wish: cannot execute: Permission denied
/usr/bin/wishの実行権限がないようなので、chmodで権限を与えてやりますが、
$ chmod +x /usr/bin/wish $ gitk /usr/bin/wish: /usr/bin/wish: cannot execute binary file
どないなってんねん!
ということで、ちょっと無理やりですが、/usr/bin/wish の中身を見ると、wish84.exeへのシンボリックリンクらしい。
$ cat /usr/bin/wish !<symlink>wish84.exe
なら、今ある /usr/bin/wish は削除して、wish84.exe を wish.exe にコピーしちゃえ。
$ cp -p /usr/bin/wish84.exe /usr/bin/wish.exe
無理やりな感はありますが、とりあえずこれで使えるようになります。
本当はどうしたらいいのか詳しい人教えて…