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


回答:


185

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

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

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

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

ルート作業フォルダを右クリックして実行しますsvn repo-browser

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

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

Repo-browserを閉じます。

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

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

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

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

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

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

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

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

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

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

コメントしてください!


37
私は「単純」ではなく「最も単純」と言った:)
JoelFan 2009

1
ありがとう!あなたは実際に私に感謝した最初の人です(賛成票とお気に入りがありましたが:)
JoelFan 2009年

ブランチをトランクに再統合すると、そのブランチでそれ以上の作業を実行できなくなるというのは正しいですか?変更を追跡せず、そのブランチとの間でマージできなくなりますか?
マイケルウォーターフォール

1
私の知る限り、マージは同じブランチから2回以上機能することはありません。
JoelFan 2009

1
これは本当に非常に便利なものです
Avil 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.