『継続的デリバリー』 第14章 学習メモ

バージョン管理の概観

1.はじめに

継続的デリバリーにおける、バージョン管理についての調査記録です。
継続的デリバリーの中での、バージョン管理についての概観を記載します。
『継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化』の第14章に対応します。

2.概要・目的

バージョン管理は、すべての変更の履歴を管理し、複数チームで開発するアプリケーション全体のコードベースを管理する。

3.背景

リビジョンとは、ディレクトリ群の中にある変更されたファイルのセットで構成されたもの。チェンジセットとも言う。 各リビジョンにはリポジトリ内の全ファイルの、ある特定の時点のスナップショットが含まれている。 リビジョン管理システムの歴史についての観点は以下の通り。

  • CVSにあった問題
  • SVNによる解決
    • リポジトリ全体に対するリビジョン
      ディレクトリやファイルの属性、メタデータなどのオブジェクトへの変更もバージョン管理
    • ブランチ・タグの参照による軽量化
    • ローカルでの操作による高速化
    • 分散バージョン管理と比べて、SVNは「よりよいCVS」であるがための限界が見える
  • 商用のバージョン管理システム
  • 〇楽観的ロック/×悲観的ロック
    • 衝突の解消

4.対応概要

(1)ブランチとマージ

ブランチとマージの分析の観点は以下の通り。

  • コードラインポリシー
  • マージの問題
  • リリースブランチ以外を作らないことの作用→CI

(2)メインラインでの開発

メインライン上での開発の観点は以下の通り。

  • 高速フィードバックによりほぼ常にリリース可能な状態
  • メインライン上での開発のCIへの作用
    • 不要ブランチの回避
  • 抽象化によるブランチパターンの適用

5.対応詳細

(1)分散バージョン管理システム

分散バージョン管理システムの観点は以下の通り。

(2)ストリームベースのバージョン管理システム

ストリームベースのバージョン管理システムの観点は以下の通り。

(3)ブランチ

ブランチの観点は以下の通り。

6.影響・作用

バージョン管理のパターンがデプロイメントパイプラインの設計の重要なポイントとなる。
バージョン管理によって素早くローリスクなリリースが可能となる。

7.おわりに

以上が、継続的デリバリーの中での、コミットステージについての概観です。

8.参考文献

『継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化』 第14章 高度なバージョン管理