2

これはsvntrunkパスです:

http://svn/path/libs/trunk/mylib

そして、ここにbranchパスがあります:

http://svn/path/libs/branches/mylib/mylib-feature-branch

ブランチのみを git に移行する必要がありますが、ブランチが作成される前のトランク履歴も必要です。

次のコマンドは、ブランチ履歴のみをフェッチします。

git svn clone http://svn/path/libs/branches/mylib/mylib-feature-branch

この回答を読みましたが、git svn cloneコマンドを変更してブランチの完全な履歴を取得する方法がわかりませんでした。アドバイスをいただければ幸いです。

4

1 に答える 1

1

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

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

ブランチとその履歴が正確に移行されるように、ルール ファイルを簡単に設定できます。

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


svn2gitgit-svn の方が使いやすいですが、KDE​​の代わりにKDE を使用するgit-svn方が優れている理由は、その柔軟性に加えて次のとおりです。

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

git-svnが劣っていて、KDEsvn2git​​が優れている理由はたくさんあります。:-)

于 2016-10-04T00:48:13.990 に答える