このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ

目次

バージョン管理

  • システム開発が終わり、システム運用中になっても、バージョン管理は終わらない。
    • 運用中のシステムで不具合が発生した場合に、運用中のシステムのソースコードを特定するためである。

バージョン管理用語

リポジトリ

  • 成果物や変更内容などを格納する場所。

トランク

  • リポジトリ管理下にあるソースコードの開発最新版を配置する。
  • 常にコンパイル可能で実行できる状態のコードを配置するようにする。

タグ

  • ある時点でのトランクのコピーを配置する。
    • 通常、リリースのタイミングでタグを作成したり、日々のバックアップを取得したりする。
  • Subversionのリポジトリにフォルダを作るときは慣例としてtagsとする。
  • Subversionのタグは単なる論理コピーである。
    • そのため、tagsの中にあるファイルは読み書き可能である。
  • tagは通常読み取り専用として運用することが多いため、読み取り専用に変更にすることをお勧めする。
    • フックスクリプトを利用すれば、tagを発行したタイミングで同時に読み取り専用にすることができる。

ブランチ

  • 通常、開発者が編集したファイルは最終的にトランクにマージする。
    • ただし、用途によってはトランクにマージしないでブランチのまま管理する。
  • Subversionのリポジトリにフォルダを作るときは、慣例としてbranchesとする。
  • Subversionはブランチのマージが貧弱であり、機能ブランチやトピックブランチがあまり使われていない場合があるが、Gitではマージが便利なため気軽にブランチが利用できる。

例:

  • バージョン1.xのメンテナンス用のブランチ
  • 特定の機能実装用のブランチ

ブランチの種類

  • 機能ブランチ
    • アプリケーション全体に大きな影響を与えるような新機能の追加や変更をブランチで開発して、きちんとテストしてからメインラインにマージすることで、他の開発に影響を与えないようにする。
  • トピックブランチ
    • 特定の作業を行うためのブランチ。
    • 作業後はトランクにマージする。
    • トピックブランチで作業をしていれば、別の緊急の作業が割り込んでも、ブランチを切り替えて割り込み作業を行え、割り込み作業が終わった後に簡単にもとの作業に戻れる。

バージョン管理のメリット

  • バージョン管理システムは、リポジトリというソースコードと変更情報を一元管理するDBを保有する。
    • そのため、バージョン管理システムのリポジトリにアクセスすると、他の開発者の作業状況を把握できる。よって、複数の開発者が協調しながら並列で開発ができる。
  • ソースコードに対する変更を元に戻すことができる。
  • ソースコードの変更をトレースできる。
  • リリースを管理できる。
    • バージョン管理システムは任意のバージョンのソースコードを即座に確認することができる。

trunk,tag,branchesという3つのフォルダ

  • trunk
    • 管理下にあるソースコードの開発最新版を配置する。
      • メインの開発ラインになる。
    • 常にクリーンな状態のコードを配置するようにする。
  • tag
    • ある時点でのtrunkのコピーを配置する。
    • 通常、リリースのタイミングでタグを作成したり、日々のバックアップを取得したりする。
  • branches
    • trunkに対して大幅な変更を加える場合や、trunkとは別ラインで開発を行うときに利用する。
    • trunkからのコピーをbranchesに配置して、開発を行う。
    • 通常は最終的にtrunkにマージする。ただし、場合によってはマージせずにtrunkのまま管理する。

参考文献

  • 『現場で使えるデバッグ&トラブルシュート Java編』