11

私には巨大なプロジェクトがあります。

ブランチを作成する必要があります - これはプロジェクトのバージョン 2 になりますが、バージョン 1 のバグ修正としてトランクを保持し、ブランチ 1 と並行して変更する必要もあります。

ブランチに新機能を追加しながら、バグ修正をトランクからブランチ 1 にマージする必要があります。

最後に、すべての変更をトランクにマージして、そこから新しいタグを作成する必要があります。

したがって、バージョン 1 のバグ修正、バージョン 2 の新しいブランチ、そしてもちろんバージョン 2 のバグ修正のマージが必要です。

私はsvnを使用していますが、svnは常に問題を引き起こします。競合なしで何かをマージすることはできません。

誰かが私に何をすべきかアドバイスをくれますか?

よろしく

4

4 に答える 4

6

古いバージョンにバグ修正を提供する目的でブランチを作成することをリリース ブランチと呼びます。トランクでバグ修正を開発する必要があります (すべての新しいバージョンに適用する必要があるためですよね?)。そこから、それらをマージして、まだサポートされているバージョンに戻します。つまり、バージョン 1 がサポートされなくなったら、バグ修正を元にマージするのをやめるということです。詳細については、ドキュメントを参照してください。

トランクのバグ修正をブランチにマージできない場合、解決策は「バックポート ブランチ」を作成することです。ここで、trunk からの修正を部分的にマージするか、コードがあまりにも異なる場合は同じ修正を部分的に書き直します。問題を修正するために通常実行するマージを記録することもお勧めします。マージの追跡は、問題が修正されたかどうかを確認するのに役立ちます。

/branches/1.2.x を修正する場合、Subversion プロジェクトが使用する命名規則は、1.2.xr[REVNUM] というバックポート ブランチを作成することです。REVNUM は、バックポートするリビジョン、または 1.2.x-issue[ を示します。 ISSUENUM]、ここで ISSUENUM は修正中の問題を示します。

バックポート修正の作成が完了したら、それをリリースにマージできます

svn checkout .../branches/1.2.x myproduct-1.2.x
svn merge --reintegrate .../branches/1.2.x-r123 myproduct-1.2.x

ブランチを再統合した後、ブランチを削除する必要があります。

于 2010-03-24T23:39:10.423 に答える
0

何よりもまず、@ SanderRijkenによって提案されたSVNドキュメントを見て、機能とリリースのブランチが何であるかを確認することをお勧めします。

しかし、あなたの質問の音から、あなたの主な問題は別の問題だと思います。つまり、マージがまったく「機能していない」ということです(つまり、すべてが予期しない場所で競合を引き起こします)。それで、おそらくあなたはあなたがしていることを正確に詳しく説明することができますか(マージに使用するコマンドを投稿するなど)?

于 2010-03-29T06:42:01.830 に答える
0

まず、製品のリリース バージョンであるバージョン 1 の「タグ」を作成しておく必要があります。プロジェクトのバージョン 2 は、バージョン 2 ブランチではなく、トランクの継続になります。ブランチを作成する必要がある唯一の理由は、(リリースされた) バージョン 1 にバグ修正を行うことです。新しいバージョンに対して行うことはすべて、そうしない理由がない限り、トランクで行われます。

于 2010-03-09T15:52:51.087 に答える
0

トランクからブランチに変更をマージした後、2-URL マージを使用してブランチをトランクにマージするのが最善であることがわかりました。私が理解している限り--reintegrateは、失敗することがある 2-URL マージの単純な構文です(ただし、最後にバージョン 1.5 で reintegrate を使用しました)。

svn merge url://trunk@mergedRev url://branch@HEAD .

mergedRev は、最後にトランクをブランチにマージしたときのリビジョンです。

単純なマージ命令を使用すると、トランクからブランチにマージしたすべての変更が、マージバック時にトランクに追加する必要がある変更として表示されます。2-URL マージの最初の URL は、どの変更がトランクから来たかを svn に伝えます。これにより、マージ中の競合が大幅に減少するはずです。

リポジトリの構造については、ariejan.net からのブログ エントリを提案できます (私の投稿では 1 つのリンクしか使用できないため、以下を参照してください)。

ブログエントリ: ariejan.net/2006/11/24/svn-how-to-structure-your-repository/

于 2010-03-29T08:27:56.137 に答える