Git svn clone: リビジョン履歴の取得を延期する方法 質問する

Git svn clone: リビジョン履歴の取得を延期する方法 質問する

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

おすすめ記事