1. ホーム
  2. svn

[解決済み] Subversionリポジトリにおける「branch」、「tag」、「trunk」の意味とは?

2022-03-21 19:16:05

質問

Subversion(というか一般的なリポジトリ)の議論では、この言葉をよく目にします。

私はこれまで SVN この数年間、私のプロジェクトでは、これらのディレクトリの完全な概念を把握したことがありません。

これらは何を意味するのでしょうか?

どのように解決するのですか?

タグがブランチに似ているという意見には賛成しかねます。タグは単なる目印に過ぎません。

  • トランク は、プロジェクト開始から現在までの開発主体です。

  • 支店名 は、トランク内のある時点から派生したコードのコピーで、トランク内のコードの整合性を保ちつつ、コードに大きな変更を加えるために使われます。大きな変更が計画通りに行われた場合、通常、トランクにマージされます。

  • タグ には、保存したいトランクやブランチのある時点を指定します。保存する主な理由は、アルファ版、ベータ版、RC版、RTM版など、そのソフトウェアのメジャーリリースであるか、トランクのメジャーリビジョンが適用される前の最も安定した時点であるかの2点です。

オープンソースプロジェクトでは、プロジェクトの関係者がトランクに受け入れなかったメジャーブランチが、次のようなベースとなることがあります。 フォーク -- 例えば、他のソースコードと共通の起源を持つ、全く別のプロジェクトなどです。

ブランチとタグのサブツリーは、次のような点でトランクと区別されます。

Subversionでは、システム管理者が フックスクリプト これは、例えばリポジトリへの変更のコミットなど、特定のイベントが発生したときに実行されるようにトリガーされます。典型的な Subversion リポジトリの実装では、作成後に "/tag/" を含むすべてのパスを書き込み禁止にするのが一般的で、その結果、一度作成したタグは(少なくとも "ordinary" ユーザーにとっては)不変となります。これはフックスクリプトによって行われ、フックスクリプトは以下の場合にさらなる変更を阻止することによって不変性を強制します。 タグ が、変更されたオブジェクトの親ノードである場合。

Subversionは、バージョン1.5以降、ブランチ・マージ・トラッキングに関する機能も追加しています。 ブランチ をトランクにマージすることができ、インクリメンタルなマージもサポートされています。