1

これはこの質問の続きです: TortoiseSVN merging branch to trunk 元の質問を編集する必要がある場合は、お知らせください。編集します。

こちらが現状です。

私の PC にすべて最新の作業コピーを含むプロジェクトがあります。それに基づいて新しいブランチを作成し、作業コピーをこの新しいブランチに切り替えました。

それ以来、別の開発者がトランクにいくつかの変更をチェックインし、私はブランチにいくつかの変更を加えました。同じファイルを変更したとは思わないので、競合が発生する限りは問題ないはずです。

変更をトランクにマージしたいと考えています。

マージを選択し、リビジョンの範囲をマージを選択します。マージ元の URL トランクが選択されています。範囲は空白です。テストマージを行うと、プロジェクトに追加されたすべてのファイルが追加されているように見えます.トランクから分割してから変更されたファイルよりも多くのファイルが確実に追加されています. 10 個または 20 個のファイルが変更されるはずなのに、何百ものファイルを処理しています。

代わりに、他の開発者がトランクにチェックインしたリビジョンの範囲を選択する必要がありますか? または、代わりに「2 つの異なるツリーをマージする」を選択する必要がありますか? それを試して、トランクからブランチへのマージをテストしようとすると、競合が発生します。ブランチからトランクまでやってみると、うまくいくようです。ブランチに変更を加える前に、トランクに含めたいブランチにいくつかの修正を加えたので、その時点ですべてをトランクに戻したいと思います。

edit : 現在の設定を明確にするためのもう少し詳細

私の作業コピーは、以前はトランクの一部でした。私は亀を使って新しいブランチを作成し、作業コピーをそのブランチに切り替えました。したがって、プロジェクトは次のようになります: /project/branches/mybranch

トランクは /project/trunk のようになります

別の開発者がいくつかの変更をトランクにチェックインし、私はいくつかの変更を mybranch にチェックインしました。mybranch でこれ以上作業を行う前に、これらすべての変更をトランクにマージしたいと考えています。mybranch のログを表示すると、チェックインが 3 つしかありません。153、154、および 159 (および 153 はブランチの作成にすぎません) トランクのログを表示すると、トランクから分割されたため 4 です: 155-158

同じファイルで作業していないため、競合はないはずです。

FROM mybranch をマージしようとしてリビジョン範囲を指定しないと、プロジェクト内のすべてのファイルが追加されているように見えます。つまり、テスト マージを実行すると、何百ものファイルが追加されていることがわかります。

テストマージ FROM トランクを実行し、リビジョン 155-158 を指定すると、トランクからのすべての変更が作業コピーにマージされるように見えます。そうすれば、すべてを mybranch にチェックインできると思います。その時点で、すべてをトランクにマージする方法を理解する必要があります。

上記のすべては、「リビジョンの範囲をマージする」を使用して行われました。

「2 つの異なるツリーをマージ」して FROM トランクを mybranch に (ヘッド リビジョンを使用して) マージしようとすると、競合が発生します。

FROM mybranch をトランクにマージしようとすると、うまくいくようです。

私が見たところ、mybranch からトランクへのツリー マージを実行することが、私がやりたいことのようです。これまでのところ、そうしないように言われているので、確かではありません。

すべてをトランクに押し込みたい。mybranch のコードに大きな変更を加える予定です。これにより、プロジェクトが完了するまでプロジェクトが中断されます。そのため、既存のコードを修正する必要がある場合に備えて、開始する前にトランクを最新の状態にしておく必要があります。

edit2 : リビジョンの範囲をマージし、マージ元の URL として mybranch を選択すると、亀のウィンドウにコマンドとして次のように表示されます: Command: Merging Revisions 1-HEAD of /branches/mybranch into C:\Users \xxxx\Documents\Visual Studio 2010\Projects\MyProject、祖先を尊重、テストのみ

私の作業コピーはすでに mybranch にあります。だから私には、これはすでにmybranchの一部である私の作業コピーにmybranchをマージしているように聞こえるので、基本的にmybranchをそれ自体にマージしていますか?

FROM トランクのマージは、私にとって意味のある唯一のことです。また、FROM トランクをマージして、他の開発者がチェックインしたリビジョン範囲を選択すると、出力は正しいように見えます。その時点で、すべてをマージしてトランクに戻す必要があります。

コマンド: /trunk のリビジョン 154 ~ 158 を C:\Users\XXX\Documents\Visual Studio 2010\Projects\myproject にマージし、祖先を尊重し、テストのみ

重要なリビジョン番号は次のとおりです。

トランク: 155-158 - これらは他の開発者がトランクにチェックインしたリビジョンです

mybranch: 153、154、および 159。153 はブランチの作成です。154 と 159 は、トランクにマージする必要がある実際のファイルの変更です。

私が試した他のコマンドは、mybranch からトランクにマージし、FROM の下にリビジョン 154 または 159 を指定し、TO (トランク) の下にリビジョン 152 を指定すると、私が望むことを実行するように見えます。ただし、現在のリビジョン以外で作業しようとしたことはないので、数年前のリビジョンとマージするとどうなるか正確にはわかりません。

コマンド: /branches/mybranch、リビジョン 154 から /trunk、リビジョン 152 を C:\Users\xxxx\Documents\Visual Studio 2010\Projects\myproject にマージします。

これを行う正しい方法を明確にするための助けに感謝します。

ありがとう

4

1 に答える 1

8

マージ元の URL トランクが選択されています。

にマージして戻す場合trunk、マージ元のURLbranch. のリポジトリ バージョンからbranchトランクのローカル コピーにマージします。マージが終了したら、トランクにチェックインします。

更新: 以下のコメント全体を読みたくないすべての人のために:コメントでmerkが述べたように、トランクのコピーをチェックアウトする必要があります。

于 2013-09-24T05:10:47.460 に答える