私の仕事には、非常に大規模で古いコードベースがあり、複数のプロジェクトを一緒にマージすることは急速に難しくなっています。これらの問題のいくつかを解決するために、リポジトリを(その全履歴とともに)git にプルしようとしています。
ただし、コマンドを指定して履歴全体を確実に取得しようとすると、git svn が多くの問題を引き起こします。
プルを実行する svn リポジトリとクライアント マシンはどちらも Windows 7 ベースです (svn リポジトリは Server 2008 マシン上にありますが、実際には同じコアです)。
これまでに試したコマンドは次のとおりです。
git svn clone "https://path/to/svn/" "local/repository/"
問題: これにより、機能するリポジトリが取得されますが、リポジトリに関連付けられている履歴の約 1/4 しかプルされません。これは、約 1 年前に何らかのメジャー アップグレードが行われたためです。詳細については誰も教えてくれません。なぜこのブレイクが発生するのかはわかりません。紛らわしいことに、リポジトリの一部であるブランチの一部には、メイン ライン トランクと共通のコミットがありません。これは、git がもたらすマージの利点を非常に深刻に損ないます。
git svn clone -T "https://path/to/svn/trunk/" "https://path/to/svn/" "local/repository"
問題: ブランチの引数がないため、ブランチが正しく取得されません。
git svn clone --b="https://path/to/svn/branches" -T "https://path/to/svn/trunk/" "https://path/to/svn/" "local/repository"
問題: 次のエラー:
subversion/libsvn_subr/path.c:115: failed assertion `is_canonical(component, clen)`.
0 [sig] perl.exe" 4432 open_stackdumpfile: Dumping stack trace to perl.exe.stackdump
スタック トレースは、有用な情報を提供しないポインタ位置の理解できないコレクションです。例:
Frame Function Args
028F668 74F21194 (000000EC, 0000EA60, 00000000, 0028F6BC)