1

SVN を Git に移行しています。私たちの Jenkins ジョブは特定のフォルダーを想定していますが、一部のブランチでは空である可能性があります。したがって、 --preserve-empty-dirs 引数を に提供しましたgit svn clone --preserve-empty-dirs --prefix "" ...

残念ながら、これは常に同じリビジョンで失敗し、次のメッセージが表示されます。

Found possible branch point: http://<svn>/tags/2008-03-26-1000-BINDING, 656
Found branch parent: (refs/remotes/tags/2008-03-26-1000-BINDING) cc93e7405337b31d9fce7ec28ab67a9ac3af3811
Following parent with do_switch
couldn't truncate file at /usr/share/perl5/Git.pm line 1410.

--preserve-empty-dirs フラグがなくても、正常に複製できます。この問題の回避策はありますか?

git バージョン 2.11.0、svn バージョン 1.9.5

4

1 に答える 1

-1

1 回限りの移行git-svnは、リポジトリまたはリポジトリ パーツの変換に適したツールではありません。これは、Git を既存の SVN サーバーのフロントエンドとして使用したい場合に優れたツールですが、1 回限りの変換にはを使用しないgit-svnでください。このユースケースにはこちらの方がsvn2git適しています。

と呼ばれるツールはたくさんありますがsvn2git、おそらく最良のツールはhttps://github.com/svn-all-fast-export/svn2gitの KDE ツールです。そのツールを使用することを強くお勧めしsvn2gitます。これは私が知っている中で最高のものであり、そのルール ファイルでできることは非常に柔軟です。

現在のSVNレイアウトから必要な結果を生成するようにsルールファイルを簡単に構成できます。また、ディレクトリsvn2gitに空の.gitignoreファイルを配置して保持するコマンドラインオプションを指定することにより、空のディレクトリを保持するように指示することもできます.

リポジトリの履歴について 100% 理解していない場合は、http://blog.hartwork.org/svneverever ?p=763から、Git に移行するときに SVN リポジトリの履歴を調査するための優れたツールを使用できます。


始めるのは簡単ですが、柔軟性に加えて、KDE​​を代わりにgit-svn使用することが優れている理由がいくつかあります。svn2gitgit-svn

  • svn2git履歴は(正しいものが使用された場合)により、より良く、よりきれいに再構築されます。これは特に、ブランチやマージなどを含むより複雑な履歴の場合に当てはまります。
  • タグは実際のタグであり、Git のブランチではありません
  • git-svnタグには余分な空のコミットが含まれているため、ブランチの一部ではありません。デフォルトでは、フェッチされたブランチを指すタグのみがフェッチされるため、コマンドを指定するまで、通常はそれらfetchを取得しません。--tags適切な svn2git タグを使用すると、それらが属する場所になります
  • svn2gitSVN でレイアウトを変更した場合は、これを で簡単に構成できますが、git-svn最終的に履歴が失われます
  • svn2git1 つの SVN リポジトリを複数の Git リポジトリに簡単に分割することもできます
  • または、同じ SVN ルートにある複数の SVN リポジトリを 1 つの Git リポジトリに簡単に結合する
  • svn2git変換は、よりも正しい方が何億倍も高速ですgit-svn

git-svnご覧のとおり、KDE ​​が優れているのに KDE が優れている理由はたくさんありますsvn2git。:-)

于 2017-04-06T07:52:23.540 に答える