ちょっとした開発プロジェクトにアサインされて、既存のコードベースを教えてもらったら、
Subversionのリポジトリが送られてきて残念、、なんてよくある話なのですが、
2013年にSVNってのもなぁということで、git-svnを使ってみることにしました。
社内にはgitのリポジトリあるのでどっかでシレっとそっちにpushして今後はこっちで、、とか?w
#とは言え、私の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をインストールし直して業務で使ってみましょかね~
秀和システム
売り上げランキング: 82,338
コメント
Git for Windowsのインストールだけで、一応git svnは使えるはずです。ただ、msysGit/Git for Windows共通の問題として、perlやsvnのバージョン問題があり、うまく動かなかったりすることはあると思います。
ishisakaさん、
コメントありがとうございます!
おぉ、そうなのですね〜。出来ればイロイロ入れたくないので、明日会社行ったらGit for Windowsだけで試してみようと思います!
Git for Windowsでgit svn cloneできました!ありがとうございました~!
[…] git-svnでチェックアウトしてきて(Windowsマシンでgit svnを使ってみる | shinodogg.com) […]