SvnからGitに移行するときに苦労してるところや知っておくと便利なTipsを紹介します
ここ最近、svnで管理されているソースをGitに移行するということを時間を見つけてはやっています。
svnでは以下の問題がありました。
まずは、git svn cloneでsvnからコードをcloneします。
それをあらかじめ作成してあるGitのレポジトリにpushします。
これだけで終われば簡単なのですが、プロダクションとsvnのコードを比較すると、差分が現れます。
きちんとした運用であれば差分はでないのですが、プロダクション環境へのデプロイが自動化されていないことや、svnをソースのバックアップとして運用していたという歴史的な経緯で差分が発生していました。
この差分をマージしないとまずいので、プロダクションのコードを正として差分をマージします。
このときに知っておくと作業がはかどるTipsを紹介します。
不要なファイルは削除する
比較する前にOSが自動で生成するファイル等があると邪魔になるので、先に消しておきます。
find . -name "._*" -exec rm {} \; find . -name ".DS_STORE" -exec rm {} \;
colordiff
diffをcolorつきで表示してくれるので、見やすくなります。
インストール方法
brewでinstall。
shellにaliasを設定します。
alias diff="colordiff"
diffの便利なオプション
-r
対象ファイルを再帰的にたどる
-w
スペースの違いを無視する
-q
ファイル名のみ表示
-u
差分の前後の行を表示
---exclude
指定された対象を除外する
再帰的に差分のあるファイル名だけ知りたい場合
diff -rwq dir1 dir2
.svnディレクトリと.DS_STOREを無視したい場合
diff -rwq --exclude=".svn" --exclude=".DS_STORE" dir1 dir2
GUIで差分をみる
GUIで見たい場合は、DiffMerge(Mac)とWinMerge(Windows)があります。
DiffMerge(Mac)
http://sourcegear.com/diffmerge/
WinMerge(Windows)
http://www.geocities.co.jp/SiliconValley-SanJose/8165/winmerge.html
おわりに
いくつか便利なTipsを紹介しましたが、差分の比較をやりやすくすることしかできないので、 最後は気合いでやるしかないです。
根気は必要ですが、Gitのほうがコマンドが使いやすいですし、Githubでプルリクエストが使えるようになるので、メリットも大きいと思います。