2011-02-01 9 views
1

コミットを維持しながら、gitリポジトリを取得して既存のSubversionリポジトリに新しい(任意の深くネストされた)ディレクトリとしてインポートする方法がありますか?歴史?例えば履歴を維持しながらSubversionリポジトリのサブディレクトリにインポート

、私は以下の(簡体字)のディレクトリ構造とsubversionのレポを持っている場合:

backends 
backends/A 
backends/B 

と私はGitのレポに新しいバックエンドCに取り組んできましたが、私は今、追加したいですbackends/Cとしてsvnリポジトリにgit repoの内容。

私が見つけたほとんどの情報は、トップレベル(一般に新しく作成された、またはそれ以外の場合は空のsvnレポ)にインポートすることに焦点を当てているようです。

私の現在のアプローチは、GitのSVNとGitのリベースを使用backends/C

git filter-branch --index-filter \ 
     'git ls-files -s | sed "s-\t\"*-&newsubdir/-" | 
       GIT_INDEX_FILE=$GIT_INDEX_FILE.new \ 
         git update-index --index-info && 
     mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD 

までのgitリポジトリの既存のトップレベルをプッシュするgitのフィルタ分岐のmanページから次のコードを使用することですsvn repoにファイルを取得します。ほとんどの人がそれをやっているのでしょうか、それとも「良い」方法がありますか?

答えて

2

すべてのgitリポジトリをsvnサブディレクトリにコミットして、svnリポジトリの残ったものがgitに表示されないようにしたい場合は、メインの代わりにそのsvnサブディレクトリにgit-svnを指定するだけですdir。

例として挙げた簡略化されたディレクトリ構造が実際にはすべてtrunk /にあると仮定すると、git-svnを設定するときは、git svn init -Ttrunk/backends/C urlまたはgit svn init --prefix=backends/C/ urlのようになります。これらは正確なコマンドではありませんので、必ずドキュメントを参照してください。

+0

svnサブディレクトリのgit-svnを指し示すとうまくいきました。ありがとうございます。 –

関連する問題