リモートのsubversionからクローンする場合にエラーが多発する
結論
subversionへインポートしてから、gitへインポートする(案外、SVN syncすれば途中から再開するのかもしれない...)
方法
前提
- git (tortoiseGitなど)がインストールされていること
- HDDに十分な空きがあること
準備
svnportable をダウンロードする
任意フォルダ(例: C:\APP\)へ解凍する
コマンドプロンプトを開く
任意フォルダ(C:\WORK)へ移動し、パスを設定する
C:\> C: C:\> cd C:\WORK C:\WORK> set PATH=%PATH%;C:\APP\svnportable\SVN
SVNの構築
SVNリポジトリを構築する(リポジトリ名: svnrepo)
C:\WORK> svnadmin create svnrepo
作成したSVNリポジトリ(C:\WORK\svnrepo)に対してpre-revprop-changeを設定する
C:\WORK\svnrepo\hooks\pre-revprop-change.bat (似たような名前があるので注意)
exit 0
C:\WORK> svnsync init file:///c:/work/svnrepo http://remote-repo.test.com/svn/trunk/ Copied properties for revision 0. C:\WORK> svnsync sync file:///c:/work/svnrepo >> sync.log <|| コンソールが戻ってくるまで待つ。(結構時間がかかる) 途中でエラーになるような場合は、もう一度svnsync syncを実行すると、途中から再開されるはず。 SVNリポジトリサーバーを構築する。(黒い画面は閉じないで!) このとき、firewallの警告が出るので、適度に許可する。 >|| C:\WORK> svnserve -d -r C:\WORK
gitへインポート
TortoiseGitからClone(クローン)を実行する。
このときのURLは、 svn://localhost/svnrepo 。
備考: file:///c:/work/svnrepo と指定すると、古いSVNで構築したリポジトリは読んでくれるみたいだけど、
新しいリポジトリだとエラーになってしまう。そのため、いったんサーバーを構築して、フォーマットについて関係をなくす。
git.exe svn clone "file:///c:/work/svnrepo" "C:\work\svnrepo-git" -T trunk -b branches -t tags Initialized empty Git repository in c:/work/svnrepo-git/.git/ Couldn't open a repository: Unable to open an ra_local session to URL: Unable to open repository 'file:///c:/work/svnrepo': Expected FS format '2'; found format '4' at C:\app\dev\PortableGit/libexec/git-core\git-svn line 2327
本題
gitのcloneではなぜかsvn管理ファイル情報が落ちてこない。
セキュリティ的な問題でそんなことをしているのかもしれない。
gitの管理ファイル
repo\.git\svn\.metadata
; This file is used internally by git-svn ; You should not have to edit it [svn-remote "svn"] reposRoot = svn://localhost/svnrepo uuid = 00a224f8-c41a-c649-a018-6eaac1382256 branches-maxRev = 333 tags-maxRev = 333
svnのuuid等を取得する
"Repository UUID"が、.metadataに記載している情報。
C:\WORK>svn info http://remote-repo.test.com/svn/trunk/ Path: trunk URL: http://remote-repo.test.com/svn/trunk/ Repository Root: http://remote-repo.googlecode.com/svn/ Repository UUID: aaa61f23-730a-238f-b720-e77452aaaaaa Revision: 333 Node Kind: directory Last Changed Author: test@test.com Last Changed Rev: 326 Last Changed Date: 2013-10-26 05:44:09 +0900 (土, 26 10 2013)
参考文献
- Git - Git と Subversion
- git-svnについてとっても詳しく書いてある