1

git に移行する Subversion リポジトリがあります。

svn リポジトリのレイアウトはほぼ標準的ですが、歴史のある時点で、馬鹿な開発者 (それは私でした) が誤って "/foo" というディレクトリをトランクではなくリポジトリ ルートに作成したことがありました。

「foo」は「/trunk/foo」に移動する前に数週間そこに住んでいました。

「git svn clone --stdlayout [...]」を実行すると、トランクの外側で発生した履歴の一部が失われます。

「/foo」への初期の変更をgitのマスターの履歴に「マージ」する方法はありますか?

*編集 *または、不足しているリビジョンをブランチに追加する方法はありますか?

4

1 に答える 1

1

これであなたが望むものが得られるかどうかはわかりませんが、試してみてください:

  1. foo フォルダーを別のフォルダーに複製します。そのためには、元の場所 (/foo) にあったリ​​ビジョン範囲を見つける必要があります。rev 100 で作成され、rev 200 で /trunk/foo に移動されたとします。この場合、コマンドは次のようになります。

    git svn clone -r100:200 http://server/foo

別の git repo foo を取得します。

  1. メインの git リポジトリに移動し、foo をリモートとして追加します。

    git remote add foo /path/to/foo

  2. フェッチ:

    git fetch foo

これで、remotes/foo/master にローカル ブランチを設定するか、マスターにマージできます。新しいコミットと元のコミットには共通の履歴がないため、正しい履歴グラフはありませんが、1 つの git リポジトリにすべての開発履歴があります。

于 2012-12-02T21:58:35.137 に答える