SubversionとGitの違い

コラム
スポンサーリンク

システム開発を行う際の構成管理ツールには様々なものがあります。わたしの認識では、Subversion(SVN)がもう何年もシステム開発の構成管理ツールとしては一般的でした。しかし、ここ数年Gitが大きく躍進してきたと感じます。

その理由はなぜか?ということで、今回は実際に使用してみたSubversion(サブバージョン)とGit(ギット)の大きく異なる点を整理してみたいと思います。

SubversionとGitの違い

Subversion(以降SVNと記載)もGitも主にチームでシステムを開発する際のバージョン管理ツールです。しかし以下のような違いがあります。

Gitはローカルコミットができる

SVNとGitでは、リモートリポジトリに登録する流れが異なります。

SVN:ローカル編集 ⇒ コミット ⇒ リモートリポジトリに登録
Git:ローカル編集 ⇒ コミット(ローカルコミット) ⇒ プッシュ ⇒ リモートリポジトリに登録

Gitでは、リモートリポジトリに登録する前に、ローカルにコミットすることが可能になっています。仕事でシステム開発を行う場合、コミットせずに長時間作業を続けると、もし誤ってソースを削除してしまった場合、作業の進捗に大きな影響がでます。

そのため、コミットはこまめに行いましょうと指導されます。しかし、チームで仕事をすると、誰かが誤ってコミットしたことで、問題が発生することが実際にはよくあります。

Gitでは、コミットがローカルコミットとなっているため、他の開発者に影響を与えません。そのため、作業中の状態でもコミットが可能です。この点がSVNとの大きな違いです。

ただ、Gitでは手順が1つ増えることになります。そのため、最終的にリモートリポジトリへの登録忘れには気をつけなければいけないです。運用ルールを明確化して使用することが大切です。

GitはPull request(プルリクエスト)ができる

もう一つの大きな違いは、GitではPull resuest という機能があります。これは、リモートリポジトリにpush(プッシュ)したことを他の開発者に通知する機能です。

また、Pull resuest 送信時にメールを送信することが可能です。実際の仕事では、pushした後にメールでレビュー依頼を出すことが多いため、この機能を有効に活用できれば、別途メールでレビュー依頼を出す必要がなく、作業を効率化できる可能性が高いです。

まとめ

SVNは、バージョン管理のローカル管理ツールとして、とても優秀で今後も使い続けていく企業も多いと思います。

しかし、より効率的にシステム開発を行おうと考える企業では、Gitでのバージョン管理が主流となりそうですね。既に既存のシステム以外はGitを使用している企業が多いかもしれませんが。

Gitは、GitHubに代表されるクラウドサービスも盛んです。セキュリティに対する問題は、まだいくつかありますが、今後グラウドを利用した構成管理ツールもより高機能となっていくのではないでしょうか。リモートワークも主流となりつつありますので、より効率よく安全に使えるサービスが増えてくるとよいなと思います。

コメント