1. ホーム
  2. svn

[解決済み] TortoiseSVNでブランチとマージを行う最も簡単な方法は何ですか?

2023-07-14 01:10:44

質問

TortoiseSVN を使ってブランチやマージを行うための、とても簡単な方法は何でしょうか?

どのように解決するのですか?

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

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

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

ルートワークフォルダを右クリックし svn commit を実行して、ローカルでの変更がトランクにコミットされることを確認してください。

ルートワークフォルダを右クリックし svn repo-browser .

リポジトリにまだbranchesフォルダがない場合: trunkフォルダのすぐ上のフォルダを右クリックし、"create folder"を実行してbranchesフォルダを作成します(たとえば、trunkが http://myserver/svn/MyRepository/MyProj/Trunk である場合、次のように作成します。 http://myserver/svn/MyRepository/MyProj/Branches ).

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

レポブラウザを閉じます。

作業フォルダルートを右クリックし、実行します。 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 を満足させるために必要です)。次に svn commit を実行して、マージされたトランクの変更をブランチにコミットします。このステップは定期的に何度でも繰り返すことができます。

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

ルートワークフォルダを右クリックして、もう一回 svn switch を実行し、今度はトランクに切り替えます (例, http://myserver/svn/MyRepository/MyProj/Trunk ). これは本質的に、ブランチで行ったすべての作業を取り消す効果がありますが、心配しないでください...あなたは自分の作業を取り戻すことができます。(ブランチで変更していないファイルへの更新もたくさん報告されますが、これは単なる "SVN property" の変更ですので、気にしないでください)。

作業フォルダを右クリックし svn merge . 今回は、"ブランチの再統合"を選択します。URLには、あなたのブランチを入れてください(例. http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch ). 残りはそのままにして、[次へ]をクリックします。すべてそのままにして マージ . これで、ブランチで行ったすべての作業と、トランクからの最新の作業が揃いました。

最終テストを行います。ブランチでの最後のテストと同じファイルセットであるため、すべてがうまくいくはずです。ルートワークフォルダを右クリックして svn commit . ブランチで作業していないファイルも含め、すべてをコミットしてください(これらのファイルには "SVN property" の変更があるだけですが、コミットすることでSVNがすべてのリビジョンを追跡することができます)。

トランクには、ブランチでの作業と、ブランチで作業している間にトランクで行われた作業がすべて入っており、すべて動作するようになりました。さらに、SVN はすべてのファイルの完全な履歴を持ち、あなたがブランチで作業している間にチェックインされたリビジョンさえも持っています。

オプション: Repo-browser に入り、ブランチフォルダを右クリックします (例, http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch を右クリックし、"delete" を実行してください。これでトランクには何の影響も与えず、ブランチはもう必要なくなります。(本当に必要であれば、いつでも Repo ブラウザから削除したブランチを取り戻すことができますので、本当に偏執的な方でもご安心ください)。

お気軽にコメントください!