2008-09-08 8 views
4

標準のSubversion trunk/branches/tagsレイアウトがあります。中長期プロジェクトにはいくつかの支店がありますが、それまでのリリースはありません。これは近づいています。一緒にSubversionのリリースとプロジェクトに適したリポジトリレイアウトは何ですか?

  1. ミックスのリリースブランチとプロジェクトブランチ:

    は、私たちする必要がありますか?

  2. リリースフォルダを作成しますか?もしそうなら、リリースよりも良い名前がありますか?
  3. プロジェクトフォルダを作成し、そこに現在のブランチを移動しますか?もしそうなら、プロジェクトよりも良い名前がありますか?私は他のリポジトリで "サンドボックス"と "スパイク"を見てきました。
  4. 他にも何か?

答えて

-1

リリースはタグと同じです...あなたのトランクの中に複数のプロジェクトがありますか?私たちは、バージョン3.1、たとえば、の解放のために準備をしたい場合は、我々は枝/ 3.1リリースブランチを作成し、だから、

trunk 
    fooapp 
     stuff... 
    barapp 
     stuff... 
tags 
    fooapp 
     1.0.0 
     1.0.1 
    barapp 
     1.0.0 
+0

従来の名前が「トランク」ではなく、「トランク」ではないことは決して疑問でしたか?あなたが持っているものは間違いなく "トランク"です。タグ付けと分岐に関する抽象化を提供しようとするSubversionクライアントでは、これはどのように機能しますか? – bendin

+0

これは古いものですが、私は知っていますが、svnが "ブランチ"と "タグ"の下で同じ機能を使用しているからといって、同じものを使うべきではありません。 – khedron

0

その場合、私はタグ

内部の同じフォルダにコピーしますトランクから個々のコミットをマージしてください(リリースブランチは、通常、主要な開発ブランチから最も重要な修正のみを受け取ります)。

通常、このリリースブランチはアルファテストとベータテストのフェーズで動作し、次のリリースがしきい値に達すると閉じます。

あなたのDVDを押すか、ダウンロードパッケージをアップロードしたら、リリースブランチにリリース済みのタグを付けることができます。後で必要に応じて同じリビジョンから簡単に再構築できます。私たちは一ビッグプロジェクト構造ではなく、あなたが概説している多くの小プロジェクトを持っているが

カールは

0

我々はすでに、タグを使用します。

この場合、タグ付けする必要があります。 1.0.0だけでなく、ブランチ、例えば。 1.0。私の関心事は、プロジェクトブランチとリリースブランチを混在させることです。

branches 
    this-project 
    that-project 
    the-other-project 
    1.0 
    1.1 
    1.2 
tags 
    1.0.0 
    1.0.1 
    1.1.0 
    1.2.0 
    1.2.1 
10

私は2つの理由から、次のようなレイアウトをお勧めします。 - 特定のプロジェクトに関連するすべてのものは、ツリーの同じ部分内にあります。 それが簡単に人々が を把握することを可能にする - 権限の扱いは、このよう

ところでやすくなることがあります。変更履歴は、通常、より良い、そのように保存されているので、いくつかのリポジトリと良いでしょう、代わりに多くの(歴史を変えますあなたが特別でやや複雑な行動をとらない限り、リポジトリ間でファイルを移動すると消えてしまいます)。ほとんどの設定では、メインリポジトリと、Subversionを試している人のためのサンドボックスリポジトリの2つのリポジトリのみが必要です。

project1 
    trunk 
    branches 
    1.0 
    1.1 
    joes-experimental-feature-branch 
    tags 
    1.0.0 
    1.0.1 
    1.0.2 
project2 
    trunk 
    branches 
    1.0 
    1.1 
    tags 
    1.0.0 
    1.0.1 
    1.0.2 
+0

あなたの例では、ブランチとタグはどのように関連していますか? 1.0。*タグは、1.0ブランチのさまざまなリビジョンのすべてのコピーですか? – abeger

+1

@abeger:はい。幸いにも、私たちは安価なコピーを話しています:http://svnbook.red-bean.com/en/1.5/svn.branchmerge.using.html#svn.branchmerge.using.create.dia-1 –

0

私が働いているところでは、ちょうど "枝"の代わりに "temp-branches"と "release-branches"ディレクトリがあります。だからあなたのケースでは、プロジェクトブランチは一時的なブランチの下にあり、リリースブランチ(リリース時に作成されたブランチ)はリリースブランチになります。

1

他の人の話からは、アルファからベータ、プロダクションへのかなり剛性の構造があります。アルファコードはトランクの頭が何であっても大部分は安定していますが、必ずしもそうではありません。リリースする準備ができたら、そのコードを効果的にフリーズする「リリースブランチ」を作成し、バグ修正だけを適用します。 (これらはトランクに戻されます)。また、タグはリリース候補として定期的に作成され、ベータ版です。コードが本番環境に移行すると、リリースブランチはサポート、セキュリティ、バグ修正のために開いたままになり、マイナーバージョンにタグが付けられ、リリースされます。

特定のバージョンがサポートされなくなったら、ブランチを閉じます。これにより、どのリリースで修正されたバグを明確にしてから、トランクに移動させることができます。

長時間にわたりシステムを壊すような、長期間または大規模な変更は、独自のブランチにも与えられますが、これははるかに短命であり、その中に「リリース」という単語はありません。

0

もう1つの重要な考慮事項は、ブランチを開始するタイミングとブランチを終了するタイミングです。これはリリーススケジュールにも依存しますが、テストとリリースの所要時間にも依存します。私の経験では、これはチームの誰もが計画が何であるかを知っていることを保証するという点で多くの管理を必要とし、そのすべてはリリースwikiで文書化することによって助けられました。

あなたが探している答えはあまりありませんが、いったん構造体を整理すると、すでに十分な提案がありました。次の課題は、チームに情報を提供し、追跡することです。

関連する問題