git-svn を使用して、大規模な SVN リポジトリ (〜 28k コミット) を Git に変換しています。プロセスが完了したとき (~ 1 1/2 週間)、いくつかの .ps1 ファイルが差分でバイナリとして扱われているのに遭遇しました。ファイルをテキストとして扱うように git に指示する .gitignore ファイルをマスターに (もちろん変換後) コミットしました。
* -text
*.snk binary
*.ico binary
*.chm binary
and so on...
注: -text は、行末をそのまま扱うように指示するだけです (データベースに Unix の行末とともに保存しません)。
ただし、もちろん、変換後にのみ .gitattributes を追加できました。
.gitattributes は、以前のコミット/差分の Git 拡張機能ではうまく機能しませんが、それは今は議論したくない別の問題かもしれません。主な問題は、git にバイナリーとして保管されているファイルです。
.git/INFO の下に gitattributes を保存できることをどこかで読みました。変換プロセスの前にこれを行うこともできますが、変換には 1 週間以上かかるため、もう一度試していません。最初のストライクで正しく処理したいと考えています。
したがって、基本的に私の質問は次のとおりです。変換されたリポジトリを念頭に置いて、既存の git リポジトリ内の既存のバイナリ ファイルをテキスト ファイルに変換できますか?
そうでない場合: 変換手順全体で gitattributes を使用して、テキスト/バイナリとして扱われるファイルを git-svn にどのように伝えますか?
編集: 問題は変換 (意図的にファイルをバイナリとして扱う git) ではなく、「git diff」または Git 拡張機能によってファイルがバイナリとして扱われることでした。(回答を参照) 差分ツール (BeyondCompare など) を使用する場合でも、これらのファイルを操作できます。その場合、歴史の中で少し面倒です。ファイルがそのまま移行されたため、変換は問題なく機能しました。(つまりUTF-16)