4

私の仕事には、非常に大規模で古いコードベースがあり、複数のプロジェクトを一緒にマージすることは急速に難しくなっています。これらの問題のいくつかを解決するために、リポジトリを(その全履歴とともに)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)
4

2 に答える 2

0

これはアサーションエラー "svn_fspath__is_canonical(child_fspath)" (cygwin) が原因で git svn dcommit が失敗するのと同じ問題だと思います

ただし、提案された解決策は満足のいくものではないかもしれません (ダウングレード…)。

于 2013-12-04T11:20:00.643 に答える
-1

メモリが不足しているかどうかを確認しましたか? 元のクローンは実際に RAM を集中的に使用します。その場合は、別のマシンでクローンを作成し、それを開発用マシンに転送して使用できます。

于 2012-09-12T14:14:39.523 に答える