Windowsマシンでgit svnを使ってみる

ちょっとした開発プロジェクトにアサインされて、既存のコードベースを教えてもらったら、
Subversionのリポジトリが送られてきて残念、、なんてよくある話なのですが、
2013年にSVNってのもなぁということで、git-svnを使ってみることにしました。
社内にはgitのリポジトリあるのでどっかでシレっとそっちにpushして今後はこっちで、、とか?w
 
#とは言え、私のGitレベルは↓の本が積んである状態なのですが…。

アリスとボブのGit入門レッスン
川野辺 正博
秀和システム
売り上げランキング: 215,783

 
 
■ git svnがどんな感じかを知る
 
とりあえずマニュアルのページをサクっと流し読みしてみます↓
https://www.kernel.org/pub/software/scm/git/docs/git-svn.html
 
コマンドは『git svn~』って感じで、init, fetch, clone, rebase,,って馴染みなコマンドが
羅列されてるけどpushするのは『dcommit』らしい↓

Commit each diff from the current branch directly to the SVN repository

ということで↓みたいな流れでやればイイのかな?って感じですかね。

git svn clone https://リポジトリURL/trunk
 ↓
ローカルはgitでやりくり
 ↓
git svn dcommit

 
 
■ Windowsでgit svnを使うには
 
会社の開発マシンはWindowsなのですが、私は普段『Git for Windows』を使っています。
#付属ツールのGit Bashは結構イイ感じなので重宝しています
 
※ —– 3月7日追記 ここから —– ※
『Git for Windows』ではgit-svnを使えないと思っていたのですが、
ishisakaさんにコメントいただきまして、Git for Windowsでもイケるはず、と。

 
早速やってみたら↓の用にうまくいきました。

Welcome to Git (version 1.8.1.2-preview20130201)

Run 'git help git' to display the help index.
Run 'git help <command>' to display help for specific commands.
shinodogg@HogeHage ~
$ mkdir svn
shinodogg@HogeHage ~
$ cd svn
shinodogg@HogeHage ~/svn
$ git svn clone -s https://リポジトリURL/
Initialized empty Git repository in c:/Users/shinodogg/svn/xxxxx/.git/
r1 = 5exxxxxe61efd701aaf332d69cc89cf7c0a427478 (refs/remotes/trunk)
        A       hoge/conf/aaa.txt
        A       hage/conf/bbb.txt
r5 = 89xxxxxx92a5a4674944b32c3604bff50b90d4fe5 (refs/remotes/trunk)
        A       batch/src/main/com/hage/aaa.java

↓ついでに、、
・Git for Windowsのバージョンを最新版の1.8.1.2にしました
・git svn cloneは-sオプションでSubversionのtruncとかbranchとかtagをイイ感じに
 やってくれるということで、そうしました。
 
今後はGit for Windowsでやりくりしようと思います。
msysGitよりもGit for Windowsの方がマゾくなくてナイスなので。
※ —– 3月7日追記 ここまで —– ※
 
が、『Git for Windows』ではgit svnがサポートされていません。
↓のWebサイトによると、
Git for Windows / msys Git 1.8.1.2リリース | OPC Diary – No Code, No Life.
↓なそうなのですが、git svnを使うには言及されている”msysGit”を使う必要があります。

基本的にGitの開発環境とソースコードが必要ない、ただGitと関連ツール(BashとかUnix由来のシェル、ツール)が必要な人はGit for Windowsをダウンロードされて、インストーラーによるバイナリのインストールをお勧めします。msysGitをわざわざ落として、コンパイルで苦しめられるマゾい事をする必要はありません。

 
msysGitのホームページに行くと↓のように
『Git for Windows』と『msysGit』について言及されています。

 
メモ 【git】svnとの連携によると、

git-svn
gitとsvnとの連携をするためのものです。msysgitでは最初からインストールされていました。

とのことで、msysGitをインストールすりゃ良さそうね、と。
 
msysGitのFAQを見ると↓のような事が書いてあって、

SubversionをコンパイルするのにPOSIXのCが必要だけどWindowsはソレがないので、
Msysってのがあるらしく、それに対応したバージョンのPerlが必要とかそんな感じみたいです。
 
 
■ msysGitのインストール
 
ダウンロードのページからexeを落としてきて、

 
指示に従っていくと、コンソールが立ち上がります↓

 
ズダーっとインストールの処理が流れていきますが、途中でピタっと止まってしまいました。。
↓repo.or.czってとこの公開鍵が云々と。。

 
プロキシの設定とかのアレか分かりませんが、全然返ってこないので、Ctrl+Cして、
git svnを叩いてみたら、、、なんかイケるくさい、と。。

 
が、ps1が動かなくちゃっいました↓Git for Windowsと見るとこが違うみたいです。

exe”: /git/contrib/completion/git-completion.bash: No such file or directory
exe”: __git_ps1: command not found

毎回何するにも”command not found”って言われるのウザ過ぎるので、、
↓のGit for Windowsの方からコピって、、

↓msysGitでNo such fileって言われたとこにディレクトリ掘って配置

コレで事なきを得たようです。。
#Git for Windows入れてない人はどうすんだろ…?っていうか、
#インストールを途中で止めちゃったからイケないんだなきっと。。
#不都合出てきたらインストールし直すか。。
 
 
■ git svn cloneでSubversionからチェックアウト
 
適当なディレクトリを作ってgit svn cloneを叩くとinitもついでにやってくれて
↓のようにドワ~っとチェックアウトしてきます。

$ git svn clone https://リポジトリURL/trunk
Initialized empty Git repository in c:/msysgit/git/hage/trunk/.git/
r1 = 99980000000000332xxxx7c0a427478 (refs/remotes/git-svn)
        A       hoge/aaa.txt
        A       hoge/bbb.txt
        A       hoge/ccc.txt
~略~
r98 = 29999999999422f4d2fe440a18274d88bda81 (refs/remotes/git-svn)
        M       hoge/hage/aaa.java
r99 = 99990cc7ad1f063dcazzzzzzzzzz242eb83fb (refs/remotes/git-svn)
        M       hoge/hage/bbb.xml

SVNのリビジョン一つ一つに対してGitの形式のファイルに変換して保存してるんですね。
今回はSubversionに1000以上のリビジョンがあったので、20~30分かかりました。
 
 
■ git svn dcommit でSubversionにpush
 
ローカルで普通にgitでaddしてcommitしてアレやコレややった後に、
git svn dcommitしてやると、、、
↓のようにSubversionクライアントから見た時にファイルはもちろんですが、コメントも追加されています。

 
 

使えそうな手応えは掴めたのでちゃんとmsysGitをインストールし直して業務で使ってみましょかね~
 

入門Git
入門Git

posted with amazlet at 13.03.06
濱野 純(Junio C Hamano)
秀和システム
売り上げランキング: 82,338

コメント

  1. ishisaka より:

    Git for Windowsのインストールだけで、一応git svnは使えるはずです。ただ、msysGit/Git for Windows共通の問題として、perlやsvnのバージョン問題があり、うまく動かなかったりすることはあると思います。

  2. shinodogg より:

    ishisakaさん、

    コメントありがとうございます!
    おぉ、そうなのですね〜。出来ればイロイロ入れたくないので、明日会社行ったらGit for Windowsだけで試してみようと思います!

  3. shinodogg より:

    Git for Windowsでgit svn cloneできました!ありがとうございました~!

  4. […] git-svnでチェックアウトしてきて(Windowsマシンでgit svnを使ってみる | shinodogg.com) […]

タイトルとURLをコピーしました