SubversionからGitに移行するときの注意点

自分へのメモです。SubversionからGitに移行するときの注意点。

git-svn(1) にしたがって、Subversion から Git に移行できるのですが、

git svn clone Subversionのリポジトリ

Gitは色々なツールが、リポジトリ内は CR+LF ではなく、LF であることを期待しているみたいなので、上の方法で Subversion 内が CR+LF だと、Gitのリポジトリ内も CR+LF になってしまい、トラブルが起きます。

なので、上の方法で移行した後、gitattributes(5) の When text=auto normalization is enabled in an existing repository あたりに書かれている、

$ echo "* text=auto" >>.gitattributes
$ rm .git/index     # Remove the index to force git to
$ git reset         # re-scan the working directory
$ git status        # Show files that will be normalized
$ git add -u
$ git add .gitattributes
$ git commit -m "Introduce end-of-line normalization"

リポジトリ内を全て LF で統一すると、良いみたいです。Windows では普通にインストールすると有効になっている事が多いですが、.git/config の autocrlf が true になっていると、リポジトリ内は LF でも、取り出すと CR+LF に変換されます。

あまり確証はないのですが、rm .git/index したら、.git/tortoisegit.* も消した方がいいと思います。TortoiseGit の Show log で復活します。

なんか、一部の Windows 用の Git ツールが autocrlf を無視して CR+LF でコミットしていくみたいなので、コミットなどをする時は、msysgit (Git for Windows) で必ず行うみたいなルールにしておいた方がいい感じがします。改行コードがおかしくなった時は、上の方法で直ります。

また、日本語ファイル名対応版は、UTF-8ファイル名対応版 Git for Windows にあります。