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