バージョン管理の基礎

自分1人で文書の作業を行う場合、通常では最新版が最良の文書です。 変更を行い、その文書を保存できます。 保存するたびに、既存のコピーが上書きされます。大規模なグローバル分散チームで、 数百または数千ものファイルがあるプロジェクトで作業するときには、 状況が異なります。この場合、 作成者と変更を追跡し、ユーザが同じファイルに競合する変更を行ったときに 競合を解決することが重要です。 バージョン管理システムがあると、この状況に対応できます。文書、ソースコード、 Webサイト、オーディオファイルなどの大規模なデジタルアセットのコレクションへの 変更を追跡および管理できます。

バージョン管理システムの1つの手法は、バージョン化です。保存時に 前のバージョンのファイルを上書きするのではなく、 保存されたファイルの各コピーのバージョンがバージョン化され、保存された順序を 反映する数字または文字が割り当てられます。

連続するバージョン内でファイルバージョンを特定する他に、 バージョン管理システムは自動的に特定の情報を 各バージョンに関連付けます。これにより、 変更者、変更日時、変更理由が記録されます。この情報は、 プロジェクトの展開方法と特定の変更が行われた日時を理解するために いつでも参照できる監査証跡を提供します。ファイルのバージョンは 上書きされないため、バグが発生した場合、そのバグが発生した時点を特定できます。これは、 再現できないバグの修正で重要になることがあります。また、ファイル履歴を確認し、 特定の決定が行われた理由を理解すれば、プロジェクト参加者は作業を順調に進め、 今後の方向性として適切なオプションを 見つけることができます。

バージョン管理下のデータを共有するには、誰がデータにアクセスできるのか、 2人のユーザが同じファイルを変更したときの競合の解決方法は 何かを決定するために、一定レベルのゲートキーピングが必要です。このゲートキーピング機能をサポートするために、 バージョン管理システムは、ファイルのチェックアウトおよびファイルのチェックイン または送信の追加ステップを導入しました。

基本のバージョン管理ワークフローは次のようになります。

  1. バージョン管理下のアセットは、指定されたリポジトリに 配置されます。
  2. アセットは、ユーザが読み取りまたは修正できる特定の権限に関連付けられています。
  3. ユーザはアセットの作業コピーをチェックアウトし、変更を行います。
  4. 別のユーザは同じアセットの作業コピーをチェックアウトし、 変更を行います。
  5. 最初のユーザがローカル作業コピーの変更を保存し、そのコピーを チェックインします。
  6. 2番目のユーザがローカル作業コピーの変更を保存し、そのコピーを チェックインしようとします。
  7. バージョン管理システムは、同じアセットが並列して変更されたことを検出します。 2番目のユーザに変更内容を最初のユーザの変更とマージすることを 確認してから、2番目のユーザの変更をチェックイン できます。変更の比較およびマージの作業は 解決 と呼ばれます。

このように、バージョン管理システムは変更が予測可能、管理可能、 監査可能であることが保証されます。

バージョン管理システムは、従来から集中管理または分散管理のいずれかに なっています。

  • 集中管理されたバージョン管理システム では、ユーザは1つ以上の ファイルをチェックアウトしてローカルで作業できる1つのリポジトリを使用します。
  • 分散バージョン管理システム では、ユーザは リポジトリをローカルでホストし、相互に独立して作業し、 必要に応じてマージすることで作業を統合できます。

Helixサーバ では、両方のモデルをサポートしているほか、これらのハイブリッドモデルもサポートしています。

バージョン管理システムは、スタンドアロンアプリケーションとして使用するか、 ツールによって作成されたアセットを管理する手段として、 開発ツールや作成ツールに統合できます。