2

を使用して、タグ付きの SVN リポジトリを Git に正常に移行しましたgit svn-clone。ただし、git svn-clone移行しませんsvn:externals。したがって、を使用してブランチ ツリーを変更することにしましgit filter-branchた。

についてsvn:externalsは、まず svn:externals ごとに個別の Git リポジトリを作成してから、以下を使用してみましたが、うまくいきませんでした。

$ git filter-branch --tree-filter "git submodule add git@github.com:myAcc/mySubmodule.git mySubmodule" HEAD
Rewrite a013a219e4294d4ee66b323cf1db9c170d90130a (1/4)fatal: working tree '.' already exists.
Clone of 'git@github.com:myAcc/mySubmodule.git' into submodule path 'common' failed
tree filter failed: git submodule add git@github.com:myAcc/mySubmodule.git mySubmodule
rm: cannot remove `c:/myRepo/.git-rewrite/revs': Permission denied
rm: cannot remove directory `c:/myRepo/.git-rewrite': Directory not empty

これを達成する方法はありますか?よろしくお願いします。

4

1 に答える 1

1

この方法でできると思いますが、よりクリーンな方法で実行できる可能性があります。

  1. 一時的な空の git リポジトリを作成する
  2. s をサブモジュールとして追加svn:externalしてコミットします。このコミットの SHA 名に注意してください
  3. 古いリポジトリに移動します
  4. git fetch一時保管場所から
  5. git rebase <SHA of the only commit in the temporary repository>
于 2010-07-21T15:41:00.367 に答える