2

を使用して Subversion リポジトリを git に変換し終えたところです。

git svn clone--stdlayout --authors-file=ourcommitters.txt svn://svn.internalserver.com

そうしている間、gitフラグ「core.autocrlf」を「true」に設定しました-念のため。

久しぶりにコマンド終了。結果として得られた git リポジトリを少しきれいにしました (不要なブランチの削除、タグの作成など)。今ではすべてが見栄えがよく、うまく機能しています。リポジトリは Linux ボックスでホストされており、他の Linux ボックスへの複製は非常にうまく機能します。

ただし、1 つの問題に気付きました。リポジトリをWindowsボックスに複製すると、ブランチを切り替えると一部のファイルが変更されたように見えます。たとえば、私はこれを行います:

git clone svn://our.git.server/foo
git status                           # Everything is clean
git checkout -t origin/maintenance   # Switch to maintenance branch
git status                           # Everything is clean
git checkout master                  # Back to master branch
git status                           # A few files are modified!

「git diff」を実行すると、変更されたファイルは行末だけが異なっているように見えることに気付きました。これを少し調べたところ、Subversion でこれらのファイルが (LF 行末ではなく) CR-LF 行末を使用して誤ってチェックインされていたことに気付き、このバグは git リポジトリに変換されました。

「クリーンアップコミット」などを実行せずに、リポジトリでこの問題を修正する方法はありますか (これまでのところ、クローンは頻繁に作成されていないため、履歴の書き換えで問題ありません)。何らかの形で、影響を受けるオブジェクトを静かに書き換えることができるのではないでしょうか?

または、Subversion でこれを修正してから、上記の「git svn clone」コマンドを再度発行することもできます。これは段階的に機能するように見えます (修正コミットを終了する最新の行を取得するだけです) が、やはりコミットが作成されます。私はそれを回避できるかどうか疑問に思っています。

4

1 に答える 1

1

最も簡単な方法は、Subversion で問題のあるファイルを修正してから、再度クローンを作成することであることが判明しました。

git svn clone--stdlayout --authors-file=ourcommitters.txt svn://svn.internalserver.com
于 2009-10-16T13:18:23.627 に答える