13

開発ブランチをレポジトリのトランクにマージしようとしています。私が取った手順:

  1. トランクに切り替える
  2. 最新であることを確認し、競合を解決します
  3. [チーム]->[マージ]に移動します
  4. URLを選択:開発ブランチ
  5. リビジョンの開始:ブランチが作成されたときのリビジョン
  6. 改訂終了:HEAD
  7. わかった

これは魔法を実行するはずです-それは素晴らしい同期ビューを開き、すべての競合を表示しますが、そこで問題が発生します:

比較エディターには、2つのファイルが表示されます。リモートファイル(306)

これは本当に奇妙なことです。リモートファイルのリビジョン番号は、実際には作業コピー(トランク)内のファイルの1つであり、コンテンツも同様です。ローカルファイルには、ブランチ内のファイルのコンテンツが含まれています。

これで、矢印は、左から右(ブランチからトランク)にマージしていることを正しく示しています。これは、[OK]をクリックしたときにも発生します。

しかし、私は変更を右から左にしか移動できません!!! それは私が望んでいることではありません-ブランチの変更をトランクの古いコンテンツで上書きしたくありません。コンテンツを左(ブランチ)から右(トランク)に移動したい。しかし、私は正しいファイルに書くことさえできません。

なぜそこにリモートファイルを書き込むのかわかりませんか?リモートファイルウィンドウに作業コピーファイルが明確に表示され、ブランチからのファイル(マージ用)がローカルファイルに表示されます。

Subversiveにバグがありますか?

Thx、マーティン

4

3 に答える 3

6

マージは(この古いSOの質問で述べたように)破壊的には決して簡単ではないので、外部で(またはサブクリップを使用して)マージを行う方がここでは簡単です。

クライアントとリポジトリの両方が少なくともSVN1.5にある場合、Subversiveの新しいマージ機能は優れていますが、このスレッドで示されているように危険です。

SubversiveがSVN1.5用に変更されたため、マージ動作全体が変更されました。私が本当に気に入ったのは、必要な変更を選択し、それを作業コピーに適用してから、トランクにコミットする機能です。
Subversiveはこれを実行しなくなりましたが、すべての変更を作業コピーに強制し、トランクに何を配置するかを選択します。

これは望ましくない動作であるだけでなく、危険でもあります(とにかく元に戻す可能性を無視した場合)。私は自分が知っていることを仕事にコミットすることを好みます。トランクに移行する必要がある場合とない場合がある変更を取得するリリースブランチがあります。

于 2010-01-20T07:42:36.413 に答える
2

さて、これは最初は不思議に思えましたが、今度は、この回答をすべての人に更新するための適切な刺し傷を提供します。これは、Eclipse用のSVNSubversiveクライアントを使用したマージに関するものです。

トランクで開始し、ローカルブランチの下のファイルをポイントして、マージを正しく実行しています。ファイルは、[チームの同期]タブの[テキスト比較]ウィンドウで開きます。左側のナビゲーション列に競合が表示されない場合は、マージが行われたばかりです。はい、これは紛らわしく、直感的ではありません。

テキスト比較ウィンドウが提供するのは、変更をコミットする前に、変更(またはマージされたファイルに気付かずに侵入した可能性のある他の変更)を元に戻す機能です。Branchからファイルをプルしていることを忘れないでください。つまり、Branchファイルはトランクにありますが、最終的にコミットされるまでは一種の仮想リンボであり、ここで不要な変更を変更または元に戻すと、Branchのファイルが参照されます(明らかに)。そのため、作業コピーを介してトランクにマージされた変更を上書きするための片道パイプ(トランクからブランチ)しかありません。マージは行われましたが、まだ正式ではありません。

すべてが正常に見える場合は、ナビゲーターウィンドウ(Eclipse Heliosインストールの左側のペイン)でファイルを右クリックし、ドロップダウンから[同意する]を選択します。次に、メインのコード表示タブ(私のインストールではPHPですが、使用しているものなら何でもかまいません)に戻り、ファイルをトランクにコミットします。

これをテストする場合は、コミットする前にトランクでファイルを「現状のまま」表示します。マージが正しく行われた場合は、変更が反映されていることを確認する必要があります。これは、OSX Snow LeopardMacbookProでの動作方法のようです。それがWindowsとLinuxのどちらの人にとっても同じかどうかはわかりません。私はそれが本質的に同じ/類似したプロセスだと思います。

于 2011-07-11T18:38:32.000 に答える
0

それは簡単です

チェックアウトでトランクをチェックアウトします...別のプロジェクト名を付けます。

これで、ローカルで作業コピー、コミットするトランク、作業中のブランチ、およびリポジトリに変更をコミットしたブランチの両方ができました。次に、トランクプロジェクトを右クリックします(つまり、単一のファイルではなくプロジェクトを意味します)-マージ-ブランチプロジェクトを選択します(ここでも、PROJECT)ローカルコピーへのすべての変更を受け入れ、トランクに必要なものをすべて正常にコミットし、トランクを再度削除しますブランチで作業を続けます

特にブランチの場合、これはとても簡単に思え、私にとっては魅力のように機能しました

于 2011-09-21T09:41:38.057 に答える