研修(SVNについて)
これから利用するであろうSubversion(SVN)について調べる。
■Subversionとは
主にプログラムの開発でソースコードやその他のデータを管理するために用いられるシステムのこと。
↑を調べて思った自分の考え。
大規模なプログラムや複数人での開発になると、どこにファイルがあるかや、誤ってファイルを更新、削除するなど、ファイル管理がだいぶ難しくなる。そういった管理を簡単に行ってくれるのがバージョン管理システムだと思う。もしそうだったら、大学院時代に使いたかった。。。
■各用語の説明
管理システム上にあるファイル管理向けのディレクトリのこと。文書やプログラムファイルなどを管理するサーバーのようなものをイメージした。Subversionは複数人での共同利用向けの管理システムであるため、始めにリポジトリを作ってからファイルの受取を行う。リポジトリに関連する作業は、基本的に管理システム、もしくはプロジェクトの管理者が行う。
・チェックアウト
リポジトリにあるファイルを初めて取り出してローカルに保存すること。
・コミット
自分がローカルで修正したファイルをリポジトリに反映すること。修正したファイルとリポジトリに入っているファイルの情報の差分をとって、リポジトリ上に更新した差分だけ反映する。
・アップデート
他の誰かが更新したリポジトリにあるファイルを取り出してローカルにあるファイルを最新版に更新すること。ローカルで作業中に誰かがリポジトリにあるファイルをコミットしている可能性があるため、チェックアウトしたファイルで作業を始める前、コミットする前に、必ずローカルのファイルをアップデートして最新の状態に保つことが望ましい。
・コンフリクト
自分が修正したファイルと誰かがコミットしたリポジトリにあるファイルの情報の差分が重複していること。これを回避するのが↓のマージ。
・マージ
管理システムを通じてファイルを編集する場合の管理方法。ファイル管理システムからあるユーザーのローカルのファイルをコピーし、ファイルへの作業後、そのファイルを管理システムに戻してアップロードする。あるユーザーがファイルで作業していても他のユーザーが同時作業できる。ファイルを管理システムに戻す際にはきちんと差分を更新してくれる。
・ブランチ
リポジトリを分割すること。分割することでそれぞれの変更の影響を全く受けない。例えば不具合の修正、新機能の追加などの変更点を並行して進めることができる。注意点としては、開発の主流となっているものの変更をブランチに反映すること。そうしないとブランチの修正、開発が終えてから開発の主流へマージする際に正しくマージできない。
例)
/calc/trunk
↓
/calc/trunk
/calc/branches/my-calc-branch
・タグ
ファイルに対してバージョン番号ではなくて、特定の名前を付けること。開発状況などが一目で分かりやすい。
例)
$ svn copy Release-4_1-2003_10_16
↓
タグ名(バージョン名+日付)
・トランク
ブランチの中での主流となっているもの。