0

featureA と featureB の 2 つの機能ブランチがあります。

FeatureA は完成していますが、まだテストされておらず、まだテストする準備が整っていないため、トランクにマージされていません。

私は機能 B に取り組んでおり、続行するには機能 A に実装された変更が必要であることに気付きました。

最善のアプローチは何ですか?いくつかのオプションがあると思います:

オプション1

featureA を featureB ブランチにマージし (または、必要なすべてのリビジョンを取得するように注意している場合は特定のリビジョンのみ)、必要な変更以外はすべて元に戻します。

オプション 2

featureB の変更を再実装し (今回はそれほど複雑ではありません)、featureA と featureB が同じ場所にマージされたときの競合を整理します。

どちらの方法でも、機能はテストと展開の準備が整ったリリース候補ブランチにマージされます。その RC ブランチがテスト済みであることが確認されると、一度にトランクにマージされます。

4

3 に答える 3

3

3 番目のオプションがあります。

マージしたいものを厳選して、それだけをマージできます。機能 A から機能 B へのマージを実行しますが、関心のあるリビジョンのみをマージします。その後、必要に応じて残りの問題を修正します。

たとえば Eclipse では、マージ ダイアログでマージするリビジョン (または範囲) を選択できるため、これは非常に便利です。必要なすべてのリビジョン範囲に対してこれを繰り返すだけです。

于 2009-10-06T11:33:47.807 に答える
0

私は、svn に次の構造を持たせることで、この種の問題に取り組んでいます。

/prod
   /release_20090801
   /release_20090901
/staging
/trunk
/sandbox

開発者はサンドボックスで開発し、機能が追加されるとトランクにマージします。イテレーションの機能が無事に完成し、最終的な QA の準備が整うと、トランクがステージングにコピーされます。

したがって、シナリオでは、機能 A をトランクにマージしてから、機能 b の開発のためにサンドボックスにコピーできます。

于 2009-10-06T11:37:58.017 に答える
0

2 つの機能が同じソース ファイルへの変更を伴わない場合、開発を続けながらそれらを分離しておく最も簡単な方法は、混合作業コピーを作成することです。featureB をチェックアウトし、必要に応じて個々のソース ファイルを featureA に切り替えます。(svn switchさらに情報が必要な場合は調べてください。) featureA のコードを実際にマージすることなく、引き続き featureB に変更を加えてチェックインすることができます。(これにより、ローカルでの開発が可能になりますが、継続的インテグレーションを使用している場合、必要な featureA の変更が存在しないため、サーバー上のビルドが中断されます。)

もちろん、B が A に依存している場合は、B を完成させる前に A を最終的にテストしてリリースの準備を整える必要があることを意味します。私にとっては、featureA の変更を今すぐ featureB にマージし、featureB で開発を開始する必要があることを意味します。修正が featureA に適用されたときに、それらが featureB にマージされていることを確認する必要があります。

于 2009-10-06T21:33:29.103 に答える