Subversion trunk・branches・tagsの使い方

一般的なディレクトリ構成

概要

Subversionにおいて最上位のフォルダの構成は、trunk・branches・tagsとするのが一般的です。
これはマニュアルにも記載されており、公開されている様々なリポジトリでもほとんどがこのようになっています。

私はプロジェクトごとに以下のようにディレクトリを作成してソース管理をしています。

プロジェクト名
|- trunk/
|- branches/
|- tags/

ちなみにSubversionにこのような機能がある訳ではありません。
そのため、必ずこのようにしなければいけないという訳ではありませんが、初めはこの構成に慣れていた方が良いでしょう。
まずはそれぞれの役割について説明します。

trunk

ソースなどのファイルを管理する最も中心な部分です。
管理するファイルを全てこの中に入れましょう。

基本的にtrunkのみあればソース管理をすることができるので、初めはbranchesやtagsは考えなくても結構です。

trunkだけを使った方法は、このディレクトリをチェックアウトして作業を行い、コミットして終了という一番シンプルな方法になります。

branches

各機能などを個別に改修したいときなどに良く使います。

例えば、ある改修でバージョン1とバージョン2があるとすると、V1をtrunkに反映するのを待たずにV2を実装することができます。
実装後もそれぞれ好きな時に反映を行うことができます。

複数の改修がある場合には必要となるでしょう。

tags

名前の通りタグ(スナップショット)を作成します。
納品するファイルをそのまま保存しておくのです。

一度作成したタグは基本的に変更してはいけません。
変更したい場合は、一度ブランチを作成して変更した後に、再度新しくタグを作成しましょう。

タグの名前は、V1.0-xxx、V1.1-xxx、V1.2-xxx のように版が分かるように。

Subversionを利用した開発の流れ

準備

https://[URL]/ にリポジトリがあり、ソースは「https://[URL]/trunk」以下に配置されていることを前提とします。
リポジトリの作成方法などは、下記をご覧ください。
Subversion リポジトリの作成から各操作のまとめ

まずは一般的な構成、branchesとtagsのディレクトリを追加しましょう。


svn mkdir https://[URL]/branches
svn mkdir https://[URL]/tags

branchesで開発

trunkをコピーして開発用の領域をbranches以下に作成します。
今回は「v1-add-auth」という名前で追加します。
どんな内容か分かる名前にしましょう。


svn cp https://[URL]/trunk https://[URL]/branches/v1-add-auth
svn checkout https://[URL]/branches/v1-add-auth v1-add-auth

trunkをコピーして「v1-add-auth」というディレクトリを作成し、それを作業環境へチェックアウトしました。
ここで一通り開発や改修などを行います。

作業が一通り完了したらbranchesにコミットします。


svm ci

branchesをtrunkにマージ

branchesでの開発が終わりコミットしたら、trunkにマージします。
まずは、作業開始点のリビジョンを確認しておき、その後trunkに切り替えます。


svn log --stop-on-copy
svn switch https://[URL]/trunk

次はマージです。
例として、「svn log --stop-on-copy」でr100と表示された場合は、-r で「100:HEAD」と指定します。
リビジョン100~最新までの変更をマージするという意味です。

初めに、「--dry-run」を指定して、差分を確認しましょう。(実際にマージは行われません。)


svn merge --dry-run -r 100:HEAD https://[URL]/branches/v1-add-auth

確認した内容で問題なければ実際にマージします。


svn merge -r 100:HEAD https://[URL]/branches/v1-add-auth

これで作業環境へブランチの内容がマージされました。
最後にtrunkへコミットして反映します。


svm ci

tagsの作成

今までの手順でリポジトリへの反映は完了しました。
次にタグをつける手順です。
これはとても簡単でコピーするだけです。


svn cp https://[URL]/branches/v1-add-auth https://[URL]/tags/v1.0-add-auth-20131129

作成するディレクトリの名前は、内容が一目で分かることや、日付をいれることに注意してください。

Related

Vagrant+Docker+PHP環境で「session.save_path」指定時に、セッションファイルが空になるエラー

ファイル共有でのフォルダの所有者を設定 結論 PHP5.4.28 からセッションファイルのownerはrootもしくはWebサーバのユーザに限るという制限が...

LINEと連携したテイクアウト事前注文システム徹底比較!

目次 テイクアウト予約・注文受付システムのトレンド LINEと連携したテイクアウト事前注文システムの価格表 L.B.B.Cloud テイクイーツ ...

PHPで動画の撮影日を取得

PHPで動画の撮影日を取得 概要 PHPからffprobeコマンドを実行し、動画の撮影日時を取得します。 コード $posted_at = ...

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...
トップへ戻る