web-dev-qa-db-ja.com

TortoiseSVNを使用して分岐とマージを行う最も簡単な方法は何ですか?

TortoiseSVNを使用して分岐およびマージを行うための本当に簡単な「方法」とは何ですか?

79
JoelFan

作業ディレクトリがトランクから機能していると仮定します。

「ルート作業フォルダー」(この用語は常にWindowsエクスプローラーを指します)を右クリックし、svn update作業フォルダを最新のトランクに更新します。

持っているものが安定していることを確認してください。

ルート作業フォルダーを右クリックして、svn commitすべてのローカル変更がトランクにコミットされることを確認します。

ルート作業フォルダーを右クリックして、svn repo-browser

リポジトリにブランチフォルダがまだない場合:トランクフォルダのすぐ上のフォルダを右クリックし、「フォルダを作成」してブランチフォルダを作成します(たとえば、トランクがhttp://myserver/svn/MyRepository/MyProj/Trunk、作成http://myserver/svn/MyRepository/MyProj/Branches)。

トランクフォルダーを右クリックし、Copy To:そして、ブランチの新しいフォルダー名を入力します。例えば: http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch。 (これが多くのスペースを浪費することを心配しないでください...これは「安価なコピー」と呼ばれます...実際にファイルの内容を変更しない限りコピーしません)。

リポジトリブラウザを閉じます。

作業フォルダーのルートを右クリックして、次の操作を行います:svn switchおよび新しいブランチのフォルダ名を選択します(たとえば、http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch)。その他はすべてデフォルトのままにします。

ブランチで作業します。マイルストーンに到達したら、ルート作業フォルダーを右クリックしてsvn commitブランチにコミットします。 (これはトランクでは見られません)。

他の人が同じブランチで作業している場合、定期的にsvn updateルート作業フォルダから。これはブランチから更新されます。 (トランクから更新を取得しません。)

他の人が同じブランチで作業しているかどうかに関係なく、トランクからの変更を定期的にマージして、後で統合するのが難しくなりすぎないようにします。定期的なマージを行うには、作業フォルダーのルートを右クリックしてsvn merge。 [範囲のリビジョンをマージ]を選択します。 [マージ元のURL]で、トランクを選択します(たとえば、http://myserver/svn/MyRepository/MyProj/Trunk)。 リビジョン範囲を空白のままにし、他のすべてをそのままにします。次へをクリックします。すべてそのままにして、Mergeをクリックします。すべてがまだ機能していることを確認してください...そうでなければ修正してください。満足したら、通常のsvn update作業ルートフォルダからブランチから更新する(これは、SVNを満たすためにブランチで作業しているのがあなただけである場合でも必要です)。その後、svn commitマージされたトランクの変更をブランチにコミットします。このステップは、必要な回数だけ定期的に繰り返すことができます。

ブランチを統合する準備ができたら、最後にもう一度上記の手順を実行し、最終テストを行います。ブランチへの最終コミットを行います。

ルート作業フォルダーを右クリックして、別のsvn switch、今度はトランクに切り替えます(たとえば、http://myserver/svn/MyRepository/MyProj/Trunk)。これは、ブランチで行ったすべての作業を本質的に「元に戻す」効果がありますが、心配しないでください...作業を取り戻すことができます。 (ブランチで変更しなかったファイルの多くの更新も報告しますが、これらは単なる「SVNプロパティ」の変更です...心配しないでください。)

作業フォルダーを右クリックして、svn merge。今回は、「ブランチの再統合」を選択します。 URLについては、ブランチに配置します(たとえば、http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch)。残りはそのままにして、[次へ]をクリックします。すべてそのままにして、Mergeをクリックします。これで、ブランチで行ったすべての作業と、トランクからの最新の作業ができました。

最終テストを行います。これはブランチでの最後のテストで使用したのと同じファイルセットである必要があるため、すべてが機能するはずです。ルート作業フォルダーを右クリックして、svn commit。ブランチで作業しなかったファイルも含めて、すべてをコミットします(「SVNプロパティ」の変更があるだけですが、コミットするとSVNがすべてのリビジョンを追跡しやすくなります)。

これで、トランクにはブランチのすべての作業と、ブランチで作業中にトランクで行われたすべての作業が行われ、すべて機能します。さらに、SVNには、ブランチでの作業中にチェックインされたリビジョンも含め、すべてのファイルの完全な履歴があります。

オプション:リポジトリブラウザーに移動し、ブランチフォルダーを右クリックします(たとえば、http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch)そして「削除」を行います。これはトランクに影響を与えず、ブランチはもう必要ありません。 (あなたが本当に妄想的であっても、本当に必要な場合はいつでも削除されたブランチをレポブラウザから取り戻すことができるので、心配しないでください。)

コメントしてください!

184
JoelFan