1

複数の独立した git リポジトリに変えたい svn ツリーがあります。この移行の 1 つの側面は、Subversion ツリー内のクロスモジュール シンボリック リンクである inode を、git リポジトリ内の実際のファイル コンテンツに置き換える必要があることです。したがって、ある時点でA/fooが へのシンボリック リンクB/fooである場合、対応する git commit にA/fooは、 の内容を含む通常のファイルが必要ですB/foo。後で svn commit が のコンテンツを変更した場合B/foo、 の git モジュールにAは、この変更を反映する一致する commit が必要です。

これにはどのようなツールを使用できますか?

今のところ、これが私が思いつくことができる最高の計画です:

  1. svn 全体を git にクローンします
  2. fast-exportそれ
  3. シンボリックリンクをコンテンツファイルに変換するために、カスタム作成のスローアウェイコードを使用して出力をマッサージします
  4. fast-import結果を新しい単一の git リポジトリに
  5. そこからサブモジュールを作成する

しかし、おそらく、既存のコード、既存の機能、既存のツール、または私が考えもしなかったショートカットを使用して、より簡単な解決策を提案できるでしょう。

おそらく、Subversion 側でこれらのステップをさらに処理する方法さえあるでしょう。私はファイルのサブバージョン コピーの作成を多用したため、また、その概念は git の概念ではほとんど表現できないことがわかっているため、上記のアプローチではコピーされたファイルが原因でバージョン履歴が失われるのではないかと心配しています。

4

0 に答える 0