SVN リポジトリですぐに作業したいというケースがよくあります。しかし、通常の方法git svn clone [url]
では履歴全体がクローンされてしまいます。そのため、作業を高速化したいのです。最初の部分は、最後のリビジョンのみを Git リポジトリにフェッチすることです。私は次のようにします。
URL=http://google-web-toolkit.googlecode.com/svn/trunk/
REV=`svn info $URL |grep Revision: | awk '{print $2}'`
PROJECT_FOLDER=google-web-toolkit-readonly
git svn clone -r$REV:HEAD $URL $PROJECT_FOLDER
(詳細は StackOverflow の記事をご覧ください:「git-svn で svn から最後の n リビジョンをクローンする方法」
この方法では、すぐに起動して作業できます。ただし、履歴のローカル コピーはありません。
問題は、その後どのようにして svn リポジトリから履歴を取得するかということです。
また、できれば、これを 1000 回のリビジョン (逆順) 単位で実行できるとよいと思います。ご協力いただければ幸いです :)
ベストアンサー1
やり方がわかりました。そのコツは使用しないgit svn clone
代わりに、git svn init
と をgit svn fetch
個別に使用します。例を変更しました:
URL=http://google-web-toolkit.googlecode.com/svn/trunk/
REV=`svn info $URL |grep Revision: | awk '{print $2}'`
PROJECT_FOLDER=google-web-toolkit-readonly
mkdir $PROJECT_FOLDER
cd !$ #goes into dir named $PROJECT_FOLDER
git svn init -s $URL #-s implies --stdlayout with /trunk /tags /branches
git svn fetch -r $REV
# hack, hack, hack
# or update history (fetch 50 revisions back each loop
for (( r=$REV; r>0; r-=50 ));
do
git svn fetch -r $r:HEAD
done