ソースコードを管理するツールとしてGitとSVNが代表的ですよね。
皆さん明確な違いを説明できますでしょうか?
本文では、GitとSVNの違いを説明し、メリットやデメリットを記載したいと思います。
- GitとSVNの違いがよくわからない方
- どちらを使おうか迷っている方
上記に当てはまる方は是非最後までお読みください。
GitとSVN
まずはそれぞれの製品の説明をいたします。
SVN(Subversion)とは
公式ページ 引用 https://subversion.apache.org/
Subversionは、オープンソースのバージョン管理システムです。 CollabNet、Inc.によって2000年に設立されたSubversionプロジェクトおよびソフトウェアは、過去10年間で驚くべき成功を収めています。 Subversionは、オープンソース分野と企業世界の両方で広く採用されている。
SVNは集中型バージョン管理システムといいいます。
サーバで管理しているソースを取得し、サーバにソースをマージする際は、ローカルにあるソースの最新の断面をマージします。
<SVNソースコード管理のイメージ>
操作としては、上図のイメージのようにサーバに対してソースコードの取得と登録を行うことになります。
Gitとは
公式ページ 引用 https://git-scm.com/
Gitは無料でオープンソースの分散バージョン管理システムであり、小規模なプロジェクトから非常に大規模なプロジェクトまで、あらゆる速度と効率で処理するように設計されています。
上記の通り、Gitは 分散型バージョン管理システム になります。
サーバで管理しているソースコードを取得する際にその履歴まで取得し管理します。
また、サーバにソースコードをマージする際は、ローカルで管理していた履歴も含めマージすることが可能です。
<Gitソースコード管理のイメージ>
操作としては、まずサーバからリポジトリ(履歴も含んだソースコード)ごとコピーし、開発者はローカルのソースコードに対して取得や登録を行っていきます。
そしてサーバに対してソースコードをマージする際はローカルでの変更履歴も含めた形で登録することになります。
特徴~メリット・デメリット
SVN / 集中型バージョン管理
仕組みが簡単な点がメリットです。
SVNを扱う際も操作がとてもシンプルなので覚えることが少なく、すぐにプロジェクト内で浸透させることが可能です。
デメリットとしては、やはりバージョンの管理がローカルでできない点ですね。
例えばソースを開発しているときに、細めにコミットし個人で履歴を持ちたいことはあると思います。SVNの場合、サーバに対してコミットを行うことになるので、たくさんの開発者で共有しているリポジトリに対して細めにコミットは難しいですよね。
Git / 分散型バージョン管理
ローカル環境で履歴を管理できる点がメリットです。
Gitの場合ローカルにあるリポジトリに自身のソースを登録することが可能なので、 自分の作業の履歴を作ることが可能です。
チーム全体の履歴だけでなく、自分の開発履歴まで管理できるんですね。
また、サーバ障害などでリポジトリが消えてしまったとしても、SVNの場合履歴の復元までは不可能ですが、Gitの場合は誰かのローカル環境のリポジトリから復元すれば、サーバから取得時点にはなりますが、履歴まで復元することが可能です。
デメリットとしては、慣れてしまえば簡単ですがそれなりに覚えることが多い点です。プロジェクト内で初めて使う人が多い場合、使用方法などを浸透させるのに時間がかかります。
まとめ
いかがだったでしょうか。それぞれの特徴や違いを理解できましたか。
まとめると
SVN
- 操作が簡単で初心者でも扱いやすい
- ローカルでの履歴の管理ができないため個人の作業履歴を残せない
Git
- ローカルで個人の履歴の管理まで行える
- リポジトリが消失した際の復元率が高い
- 操作がやや難しくプロジェクト内で浸透させるのに時間がかかる
それぞれのメリットやデメリットを理解した上で導入をご検討ください。
個人的には履歴管理が優れているのでGitの方が良いと思ってます。
Gitを無料で便利に扱えるGitHubのアカウント作成したい方はこちらから。
https://yu-report.com/entry/githubmake
コメント