経緯
新規立ち上げプロジェクトがひと段落して暇そうにしてるところを先輩に見つかり、レガシーコードを排除するプロジェクトに参加しています。
そこでバージョン管理として使われていたのがgitではなく、Subversion(略称SVN)。
gitは分散型、svnは集中型ということは知識としては知っていましたが違いを実感はしていなかったので、3ヶ月経って感じたいい点と困った点をまとめました。
PCがWindowsOSなのでtortoiseSVNを入れていました。
SVNのいい点
子フォルダを親フォルダと別リビジョンにできる
gitだと子フォルダに移動してリビジョンを変えると、全体のリビジョンが変わりますよね。
tortoiseSVNなら子フォルダに移動して、ログを表示させてから右クリックから「項目をこのリビジョンへ更新」で子フォルダのみリビジョンを移動できます。
複数プロジェクトが含まれたフォルダはこれができると本当に便利でした。
コピー元の変更履歴を引き継げる
同じリポジトリ内からファイルをコピーして貼り付ける時に、totoiseSVNメニューから「貼り付け」を選択してペーストすれば元ファイルの変更履歴も引き継げちゃいます。
この機能を先輩に教えてもらった時は思わず「へー!!!すごい!」って声が出ていました。
すごく便利じゃないですか?
SVNの困った点
SVNのコミットがgitのpush
gitユーザーからするとコミットというとローカルリポジトリの変更を記録するイメージですが、SVNは集中型なのでコミットすると全リポジトリに変更が反映されてしまいます。
SVNとgitでは同じ単語がいくつかありますが、効果が違うので気をつけています。
紛らわしい。
「gitのコミットは事後報告、SVNのコミットは事前連絡」とTwitterで見ましたが、たしかにそうだと思います。覚えておいた方がいいです。
あとがき
今やバージョン管理といったらgitでSVNなんて使わないと思っていたので、いい経験をしています。
gitユーザーがSVNを使うことになったら日本語は通じるけど文化が違う異世界に来たと思うくらいの方がいいかもしれません。