あなたがプログラマーまたは開発者であり、ソフトウェアアプリケーションまたは任意のWebサイトで作業している場合は、変更を追跡するためのバージョン管理システムが必ず必要になります。 バージョン管理システム SCMとも呼ばれます ( S ウルスC ode Management)ツールまたは RCS ( R evision C オントロールS システム)。
バージョン管理は、コードの変更を追跡するのに役立つソフトウェアツールのメソッドまたはカテゴリであり、問題が発生した場合に、さまざまなコードバージョンで比較を行い、以前のバージョンに簡単に戻すことができます。複数の開発者が継続的に作業している場合やソースコードを変更している場合に非常に役立ちます。
バージョン管理システムの利点
プログラマーはVCSを使用して、プロジェクト履歴を確認し、次の詳細を確認できます。
- コードに加えられた変更はどれですか?
- コードに変更を加えたのは誰ですか?
- コードに変更が加えられたのはいつですか?
- 変更が必要な理由
これは、VCSが実際にどのように機能するかについてのアイデアを与える簡単な図解です。
上の図では、水色のボールの最初の行は、ソースコードのメインブランチであるマスターブランチです。つまり、 v0.1 およびv0.2 ソースコード全体のスナップショットのようなものを取るために作成された複数のバージョンです。要件に応じて、リリース、開発、ホットフィックスブランチなど、マスターブランチから複数のブランチを作成しました。複数の開発者は、異なるブランチを作成し、最後にそれをマスターブランチにマージすることで、同じプロジェクトで作業できます。
VCSの種類
VCSには、次の2つのタイプがあります。
- 集中型バージョン管理システム(CVCS)、
- 分散バージョン管理システム(DVCS)。
まず、一元化されたバージョン管理システムについて簡単に説明します。
一元化されたバージョン管理システム
一元化されたバージョン管理システムは、クライアントとサーバーの関係で機能します。サーバーには、次のようなすべての情報が含まれます。
クライアントに転送されます。開発者に最新のコードを提供する一種の共有リポジトリと言えます。そのため、開発者は毎回マスターコピーに取り組んでいます。コードの最新のコピーをプルし、それに取り組んで(変更をコミットして)、コードをリポジトリにプッシュするのと同じくらい簡単です。
集中型VCSの主な欠点は、単一障害点であるということです。中央サーバーがダウンした場合、それを使用することはできません。リモートコミットを実行している場合は、同様に時間がかかります。変更をコミットするにはインターネット接続が必要です。
例:
- オープンソース -> Concurrent Versions System(CVS)、Subversion(SVN)。
- 独自仕様 -> TeamCity、Vault、IBM構成管理バージョン管理(CMVC)。
分散バージョン管理システム
分散バージョン管理システムには一元化されたリポジトリがあり、すべての開発者はリポジトリのローカルコピーを持っています。
開発者は、ローカルコピーで同時に作業できます。コードを処理するためにインターネット接続は必要ありません。プッシュとプルを除いて、コード内のすべてを実行できます。中央サーバーがダウンした場合も、ローカルリポジトリが原因で影響はありません。
例:
- オープンソース --Git、Mercurial、Bazaar。
- 独自仕様 -Visual Studio Team Services、PlasticSCM。
SVN(集中型VCS)アーキテクチャとGIT(分散型VCS)アーキテクチャの違い
次の図は、CVCSとDVCSの違いを説明しています。
上の図から、SVN(集中型VCS)には中央リポジトリしかありませんが、GIT(分散型VCS)には中央リポジトリとローカルリポジトリがあることが簡単にわかります。
あなたがVCSとそのタイプについての基本的な考えを得たことを望みます。今後、VCSに関連するガイドをさらに公開する予定です。しばらくお待ちください!
関連記事:
- Gitとは何ですか。LinuxにGitをインストールする方法
作成者について:
Dhruv Tiwari は、自動化が大好きで、Linuxを大規模に操作し、システムがLinuxボックスにログインする必要がないほどスマートになる日の夢を見るDevOpsエンジニアです。ソースコードからコード展開、本番環境へのCI/CDの旅。