1

分散チーム(3人の内部開発者と3人以上の外部開発者)は、SVNを使用してWebサイトのコードベースを管理しています。マイナーバージョン(4.1.0、4.1.1、4.1.2など)ごとにブランチがあります。リリースを行ってサイトに公開するときに、各バージョンをマージするトランクがあります。

したがって、私たちが抱えている問題の例は次のとおりです。新しい機能が追加されました。これを4.1.1の「プロジェクトを作成する機能」と呼びましょう。4.1.1の機能に依存する別の機能は、「プロジェクトにタスクを追加する機能」と呼ばれる4.1.2で実行される予定です。

したがって、月曜日に、4.1.1は「クローズ」であり、テストする必要があると言います。通常、リモート開発者はこの時点で4.1.2の機能/チケットの作業を開始します。1週間を通して、4.1.1をテストし、バグを修正して4.1.1にコミットします。次に、金曜日かそこらで、4.1.1にタグを付け、トランクとマージし、最後に4.1.2とマージします。しかし、私たちがテストしている4〜5日間、4.1.2には、4.1.2の新機能の一部が依存する4.1.1のコードがありません。

そのため、「プロジェクトにタスクを追加する機能」機能を追加している開発者は、「プロジェクトを作成する機能」機能を構築することができず、作業を継続できるようにファイルコピーのシェナニガンを実行する必要があります。 。

このプロセスをスムーズにするために何ができる/すべきですか?

PSこの質問が以前に尋ねられた場合は、お詫びします-検索しましたが、探しているものが見つかりませんでした。

4

5 に答える 5

2

トランクに基づくブランチXと、Xに基づくブランチYが必要なようです。

Xで機能を開発し、テストを開始できます。その間に、Xを新しいブランチYにコピーし、そこで2番目の機能を開発します。

最終的に、Xはトランクにマージされて解放されます。次に、Yの作業が終了したら、テストのためにXにマージして戻し、リリースのためにトランクにマージすることができます。

両方の機能がリリースされた後、このプロセスを繰り返すことができます。次回Xで機能を終了し、その機能を構築したい場合は、Yにマージして戻します。

これを行う場合は、次のことを覚えておくことが重要です。

  • トランクからXへ、およびXからYへの通常のマージを実行します。
  • マージをXからトランクに再統合し、YからXに再統合します。
  • トランクにマージを再統合した後、コミットがXにマージされないようにブロックする必要があります。
  • Xにマージを再統合した後、コミットがYにマージされないようにブロックする必要があります。
  • どの機能がどのブランチにあるかについての詳細なメモを保管してください。そうしないと、すぐに混乱する可能性があります。
于 2010-05-13T00:47:13.703 に答える
1

私たちのやり方は、すべての開発がトランクで行われるということです。トランクにコミットするだけで、4.1.1に必要な修正がトランクから4.1.1ブランチにマージされます。4.1.2のブランチは、4.1.2でのテストが開始されたときにのみ作成されます。4.1.2ブランチが作成されると、作業はトランクで続行され、4.1.2に修正が必要な場合は、トランクで作成されてから、にマージされます。 4.1.2。

トランク(または実際には他の場所)にマージする必要があるブランチに変更を加えることは非常にまれです。

于 2010-05-13T00:38:11.107 に答える
1

他の場所に置く理由がない限り、すべての新しいコミットをトランクに入れます。たとえば、4.1.1と4.1.2に異なるブランチを作成する場合、ブランチ間でマージを実行することでこの例に最もよくアプローチできます。その後、両方をトランクにマージして戻すことができます。うん!私の意見では、それはmergeinfo地獄です。

Subversionの本からの基本的なアドバイスは次のとおりです。

http://svnbook.red-bean.com/en/1.5/svn.branchmerge.commonpatterns.html

于 2010-05-13T00:42:14.293 に答える
0

それを行うにはいくつかの方法があると思います。

しかし、私はトランクが常に安定していることを練習しています。未完成ではありません-不安定なコードをトランクに入れる必要があります。追加する新機能があり、数日、場合によっては数週間かかる場合は、そのブランチを作成します。それが行われ、ブランチが安定してテストされているように見えると、ブランチは再びトランクにマージされ、ブランチは削除されます。

このようにして、トランクは安定した状態を保ちます。そして実験的なコードは常に私がブランチです。

なんらかの理由で気が変わって、半分完了したプロジェクトをスキップした場合、トランクについて考える必要はありません。ブランチを削除するだけです。

于 2010-05-13T00:45:51.067 に答える
0

1つのアプローチは、トランクからではなく4.1.1から(そしてもちろんトランクから4.1.1)4.1.2を分岐することです。

その後、4.1.1を4.1.2に定期的に簡単にマージし、リリースするときに各ブランチのトランクに簡単にマージすることができます。

于 2010-05-13T00:45:52.300 に答える