13

私はwatirプロジェクトのgitミラーを維持しています。数週間前、誰かが最初のgitベースのパッチを提出する準備ができていました。残念ながら、プロジェクトのマルチプラットフォームの性質のために、行末(CRLFとLFなど)に関していくつかの問題が発生しました。

autocrlfオプションを('input'に)設定し、いくつかの--hardresetを実行するためにできることを試しました。ただし、数日後、毎日の更新(git svn rebase)によって次のエラーが発生します。

Incomplete data: Delta source ended unexpectedly

何をすべきかグーグルで調べてみましたが、.git/configのautocrlf設定を削除しても効果がありません。作業コピーが破損しているのではないかと心配していますが、回復不能ではないことを願っています。

明らかに、可能なアクションはsvnから再インポートして新しいミラーを開始することですが、現在のwatir-mirrorはすでにフォークされており、人々は新しいコードを開発しているので、そうする必要はないことを願っています彼らのフォークで。

助けてくれてありがとう。

4

5 に答える 5

17

brlcad svn リポジトリから git リポジトリを作成しようとしたときに、同じ問題が発生しました。git svn reset --r XXXXXXXXXX を、最初にエラーを生成したリビジョンよりも約 50 リビジョン前に設定することで解決しました。

1 つのリビジョンを戻すことは、エラーの解決に成功しませんでした。プロセスの一環として、HEAD が定義されていないというエラーを git から受け取りました。これを解決するためgit svn find-rev XXXXXに、必要なリビジョンに対応するハッシュを特定してから、git checkout を実行しました。この後、HEAD に関するエラーはなくなり、動作しgit svn reset -r XXXXXました。

于 2011-02-08T20:40:16.953 に答える
5

個人的な経験から、git-svnは、同じパラメーターを使用してsvnリポジトリーからクローン作成またはフェッチするときに、常にまったく同じコミットを生成します(試してみてください:ダミーリポジトリーを作成し、git-svnでクローン化し、さらにコミットを実行し、再度クローン化します。そして最初のコピーでフェッチします。結果のコミットはまったく同じハッシュを持つ必要があります)。

これにより、興味深いオプションが得られます。同じパラメーターを使用して別の新しいミラーを開始し、両方を比較して、どこで分岐するかを確認できます(または、まったく分岐します。ハッシュが重要なので、必ず比較してください)。それらが同じである場合(または、分岐した後にコミットを決定することは重要ではありません)、フォークを壊さずに(または、いくつかの分岐するコミットを無視することにした場合は、それらの一部を壊さずに)新しいミラーを使用できます。

于 2008-10-17T03:59:04.003 に答える
4

で同じ問題git svn fetchが発生しましたが、破損がいつ発生したのか本当にわからないため、リセットのアプローチはうまくいきませんでした。これが最終的に私のために働いたものです。git svn fetch --ignore-paths="/branches/"エラーなしで実行されました。その後、もう一度 をやりましたが、git svn fetch今回はうまくいきました。

于 2013-05-16T16:39:10.147 に答える
0

私は同じ問題を抱えていて、トッドの場合のように、以前のリビジョンに行くと問題が修正されました。

解決策は、問題のあるファイルの以前のリビジョンの2つのステップに進むことだと思います。

于 2011-02-10T03:10:46.403 に答える
0

同様の問題を見たことがあります。svn リポジトリの部分クローンを作成すると発生します。dcommit を実行しているときに、git-svn がファイルの元のソースを見つけられないと思います。完全に最新の状態であることを確認し(git svn rebase)、git svn set-treeを使用して特定の変更をsubversionにコミットすることで修正しました。コミットする変更が多数ある場合、各変更を順番に手動でコミットする必要があるため、これは面倒な場合がありますが、プッシュするコミットが 1 つまたは 2 つしかない場合はうまく機能します。

于 2012-08-28T14:10:18.527 に答える