1. 序章

バージョン管理システムは、ファイルに加えられた変更を追跡します。したがって、プロジェクトのファイルとそのさまざまなバージョンを簡単に復元できます。 さらに、多くの場合、複数のユーザーが同じファイルで作業しながら協力することができます。 今日では、商用または個人用のすべてのソフトウェア開発プロセスに必須のツールです。

このチュートリアルでは、最も人気のある2つのバージョン管理システム、つまりGITとSVNを分析して比較します。

2. ギット

まず、一般的なバージョン管理システムの機能を紹介しましょう。

  • プロジェクトのファイルを保存し、それらへのアクセスを制御します
  • ファイルの変更の履歴を保持します
  • プロジェクトのさまざまなバージョンを作成および取得する可能性を提供します
  • 変更のドキュメントを表します
  • チームのメンバーが同じファイルで同時に作業し、変更を同期できるようにします
  • CI/CDパイプラインと統合

広く使用されているバージョン管理システムの1つはGITです。 2019年のすべてのリポジトリで72% ofがgitを使用したと推定されています。 リポジトリとは、プロジェクトのファイルのストレージコンテナを指します。 GITは分散バージョン管理システムです。元々はLinuxカーネルの開発プロセスをサポートするためにLinusTorvaldsによって作成されました。

GITはGNUGPLの下でライセンスされています。 したがって、個人的な目的と商業的な目的の両方で無料で使用できます。 さらに、無料のGITベースのリポジトリホスティングがたくさんあります。 その結果、このバージョン管理システムは非常に人気があります。

2.1. 特徴

まず、GITは分岐をサポートしています。 ブランチはプロジェクトの独立したインスタンスです。 これにより、開発者は互いに邪魔することなく、同じコードベースで同時に作業できます。 GITは、さまざまなブランチをマージ(同期)するためのいくつかのアルゴリズムを提供します。 さらに、オンデマンドでカスタムアルゴリズムを追加することもできます。

第二に、GITはオフラインでの作業を可能にします。 すべてのチームメンバーは、自分のコンピューターにローカルリポジトリを持っています。 したがって、ネットワークに接続していなくても、変更を保存できます。 オフラインの間、変更は隠し、分岐、またはコミットすることができます。 次に、インターネットネットワークに接続しているときに、サーバー上のリポジトリにプッシュできます。

第三に、GITは大規模なプロジェクトの効率的な処理を保証します。 Mozilla によって行われたパフォーマンステストは、GITが多くの競合他社よりもはるかに高速であることを証明しました。 さらに、Linus Torvaldは、GITを非常に高速でスケーラブルなソリューションとして説明しました。

さらに、GITは、 HTTP、HTTPS FTP SSHなどの多くの重要なプロトコルおよびシステムと互換性があります。

要約すると、GITは分散バージョン管理システムであり、プロジェクト、特に大規模なプロジェクトで作業するための効率的な手法を提供します。 さらに、分散ワークフローをサポートし、コラボレーション作業の快適な方法を保証します。

2.2. 基本コマンド

一般に、GITはコマンドラインベースのツールです。 これは、コンソールで特定のコマンドを実行することにより、すべての機能にアクセスできることを意味します。 GITを操作するためのグラフィカルツールはたくさんありますが、基本的なコマンドの知識は非常に重要です。 このセクションでは、最も重要なものを定義します。

2.2. リポジトリの作成

GITでの作業の感触をつかむために、新しいリポジトリを作成する方法を見てみましょう。 以下の手順は、 Github GitLab BitBucketなどのGITベースのホスティングに適用できます。 最も人気のあるものはGithubです。 これは、強力なバージョン管理システムおよびコラボレーションツールです。 堅牢で、ほとんどの機能は無料で使用できます。 だから、それは行く方法かもしれません。

まず、プロジェクトのディレクトリで次のコマンドを使用して、ローカルプロジェクトをGITリポジトリとして初期化する必要があります。

git init

このコマンドは、指定された場所に.gitサブディレクトリを作成します。 GITがリポジトリを処理するために必要なメタデータが含まれています。 次に、GITトラッキング用にすべてのプロジェクトファイルを追加する必要があります。 これを実現するために、前のセクションで説明したコマンドを使用できます。

git add .

その後、すべてのファイルがステージングされます。 したがって、それらをローカルリポジトリにコミットする必要があります。

git commit -m "Initial commit"

次に、リモートリポジトリに接続する必要があります。 これは1回だけ実行する必要があります。

git remote add origin [repository-url]

最後に、すべてをサーバー、デフォルトのmasterブランチに送信しましょう。

git push -u origin master

3. SVN

2番目によく知られているバージョン管理システムはSVNです。前述の統計でわかるように、23% ofリポジトリで使用されています。 したがって、GITよりもはるかに人気がありません。 ただし、それでも市場で2番目に使用されているバージョン管理システムです。 CVSと呼ばれる古いシステムの後継として作成されました。 SVNは、その祖先のエラーと制限を排除するように設計されました。ただし、その目標は、CVSと可能な限り互換性を持たせることです。

SVNは、 ApacheLicenseの下でライセンスされています。 したがって、個人的および商業的な目的で無料で使用できます。 ただし、SVN用の無料のホスティングとツールはGITほど多くはありません。

次のセクションでは、SVNのコアコンセプトを定義します。

3.1. 特徴

まず第一に、SVNには集中型サーバーが必要です。 クライアントとサーバーの両方として機能できるGITとは対照的です。 したがって、 SVNは集中型バージョン管理システムと呼ばれます。 

第二に、SVNは分岐のための高度なツールを提供していません。 ブランチは、ディレクトリのいわゆる安価なコピーです。 簡単に言うと、コピーはファイルの文字通りのコピーではありません。 代わりに、それは特定のリビジョンへの単なるポインタです。 この手法の利点は、ブランチが軽量であることです。 作成するのに余分なスペースはほとんど必要ありません。

さらに、SVNはバイナリファイルを効率的に処理するように設計されています。 つまり、MicrosoftOfficeで作成されたドキュメントなどのバージョン管理ドキュメントに使用できます。 したがって、 MSOfficeSVN など、その目的専用のツールもあります。

SVNは一元化されているため、すべてがサーバー上の単一のリポジトリに保存されます。 したがって、アクセス制御のプロパティを簡単に管理できます。 さらに、処理する必要のある場所が1つしかないため、バックアップは簡単です。

最後に、 SVNは習得しやすいと考えられています。確かに、学習曲線はGITに比べて低くなっています。 SVNは、少なくともユーザーの観点からは、ほとんどの場合、単純で単純なメカニズムを使用します。 ただし、場合によっては、バージョン管理にいくつかの高度な機能が必要になることがあるため、これは両刃です。

3.2. 基本コマンド

SVNのいくつかの基本的なコマンドにすばやくジャンプしましょう。

3.3. リポジトリの作成

リポジトリの作成は、サーバーのオペレーティングシステム、クライアントのオペレーティングシステム、使用するプロトコルなど、いくつかの要素に依存します。 以下は、サーバーに空のリポジトリがすでに設定されていることを前提として、ローカルプロジェクトからリポジトリを作成する手順です。

まず、空のリポジトリディレクトリをダウンロードしてリモートサーバーに接続する必要があります。

svn co [repository-url]

次に、特定のプロジェクトファイルをダウンロードしたディレクトリにコピーする必要があります。

cp [local-project-directory] [local-repository-directory]

その後、SVNトラッキングのために、コピーしたすべてのファイルを追加する必要があります。

svn add [local-repository-directory]

最後に、すべてのファイルをサーバーに送信できます。

svn commit

4. GITと SVN

GITおよびSVNバージョン管理システムの基本についてはすでに知っています。 それらのコア機能の違いを比較してみましょう。

では、どちらを選択しますか? 基本的に、比較でわかるように、GITとSVNにはいくつかの長所と短所があります。 まず、要求される要件と好みを常に考えてから、それらに最も適合するものを選択する必要があります。 両方のバージョン管理システムは、開発プロセスを適切にサポートする強力なツールです。 GITは、高度なブランチ機能とコラボレーション機能、およびさまざまな無料ツールとホスティングの可用性により最も人気があります。

5. 結論

この記事では、最も人気のある2つのバージョン管理システム、つまりGITとSVNについて説明しました。 まず、GITのコアコンセプトを定義しました。 その基本的なコマンドを説明し、簡単なリポジトリを作成する方法を説明する例を示しました。 次に、SVNを同じ方法で特徴付けました。 最後に、両方のバージョン管理システムの重要な機能を比較しました。