会社で初めてSVNを使用しているが、用語がよくわかっていないため調べたことをまとめます。
#SVN(Subversion)とは何か
オープンソースの集中型バージョン管理システム。正式名称はApache Subversion。
公式サイト:http://subversion.apache.org/
###バージョン管理システム
ソースコードや様々なデータを管理するために用いられるシステム。
特に複数人で行う開発現場では、一つのソースコードを複数人が操作し、**「誰が」「いつ」「何を」「どこを」**追加/変更/削除したかがわからなくなってしまう。何か障害が発生した場合に後からソースコードを遡ろうとしても上記のような履歴が残されていないと大幅な手間が発生する。それらを回避する仕組みがバージョン管理システムである。
###集中型(クライアント・サーバ型)
クライアント(要求側)とサーバ(提供側)の役割に分離するコンピュータネットワークのソフトウェアモデル。SVNではサーバで管理しているソースリポジトリに対し、クライアントから作業コピーを要求し受け取り編集して、またサーバに編集内容(差分)を送っている。
#主要な用語
###リポジトリ(repository)
ソースコードやファイルの変更内容を格納する場所
###リビジョン(revision)
リポジトリの状態を示すバージョンの番号。コミットする毎に1プラスされていく。
###チェックアウト(checkout)
リポジトリからディレクトリツリーの内容を取得する処理。「作業コピー」と呼ばれるディレクトリツリー構成がクライアント側に作成される。
###作業コピー(working copy)
チェックアウト実行の結果としてローカル環境に保持するディレクトリツリー構成。ユーザが取得した作業コピーに対して変更作業を行い、それをリポジトリに対してコミットすることで変更内容を反映させる。
###コミット(commit)
変更した作業コピーをリポジトリに反映させること。
###競合(conflict)
特定のファイルに複数のユーザが同時に変更を加えようした時に起こる現象。一般的にファイル編集前にロックをかけることで競合することを防ぐ。
###ロック(lock)
指定したファイルやディレクトリを他のユーザに操作されないように独占すること。
###タグ(tag)
直訳すると「札」。指定したリビジョンで構成されるファイルにつけるラベルのこと。開発の現場ではリリースのタイミングで、例えば「release_20190730」のようにタグをつけて管理することが多い。
###トランク(trunk)
直訳すると「木の幹」。開発の主流となる部分。
###ブランチ(branch)
直訳すると「枝」。トランクから枝分かれすること。具体的には、開発の主流であるトランクに大規模な変更などを行う場合やバグなどの検討などトランクに対してすぐには反映でいなかったり、しばらく分けておきたい場合などで利用することが多い。最終的にトランクに変更点を反映させる(マージ)ことがほとんど。
###マージ(merge)
変更の内容をあるブランチから他のブランチに移動させること。メインの開発用ブランチをサブシステムのの開発用ブランチにマージさせたり、その逆であったりする。
###更新(update)
ローカル環境の作業コピーがリポジトリの最新リビジョンより古いリビジョンになっている可能性がある場合、リポジトリから差分ファイルを取得し、作業コピーを最新化する同期作業。