6

(以前のリビジョンで) トランクを分岐し、新しい機能を実装/コミットし、別の機能の一部をブランチにローカルに実装しました。完成した機能をトランクに再統合する必要があります。

svn cp branches/completedfeature branches/uncompletedfeature独自のブランチで部分的に完成した機能を取得します。次にsvn revert -R .、最初のブランチのすべてを最新の状態にします。

svn merge --reintegrate ../../branches/completedfeatureトランクから出ると、(私にとっては) 不可解なエラーが表示されます。

PREV, BASE, or COMMITTED revision keywords are invalid for URL while reintegrating a branch

トランクと完成したフィーチャー ブランチの両方が最新で、ローカルの変更はありません。何が起こっている?

4

3 に答える 3

6

このエラーが発生しました。

あなたの質問は、ほぼ唯一の Google 検索結果でした (ここにキーワードの説明があります)。

他のブランチがマージされた長いブランチがありました...パッチプロセスは長くて困難でした。それにもかかわらず、SVN redbood のこのセクションは、 2 つの作業コピーをマージする必要があることを示唆しています。URL から楽観的に再統合を試みたところ、うまくいきました!

cd myLocalTrunk
svn merge --reintegrate https://svn.blah.blah/blah/blah/branches/myBranch
svn ci -m "reintegrating myBranch into trunk"
于 2013-05-29T01:09:53.237 に答える
1

分岐が不十分/間違っているようです。これを正しい方法で修正する方法がわかりません。この状況にある人のために、この短命のブランチのほとんどの履歴を保持するトランクに変更を加えた方法を次に示します。

変更されたすべてのファイルを見つけますdiff -ur trunk branch。ブランチにないトランクの変更は元に戻されるため、差分を確認してください。これらのファイルを無視するか、両方のツリーのファイルに変更がある場合は、後で差分を手動で編集してください。

新しいファイルを svn でコピーして、履歴を保存しますsvn cp branch/path/file trunk/path/file

ここで必要なのは、変更されていないファイルの変更だけです。(少なくともcygwinのsvn 1.7では)ファイルを削除してから追加し、履歴を一掃するため、2つのソースマージを行うことはできません。私が選択したオプションは、パッチをビルド/適用し、何が起こったかについてコミット メッセージを作成することでした。

パッチ適用について学ぶにはもっと 良い場所がありますが、以下は私が行ったことです。両方のツリーで変更されたファイルがある場合は、マージの問題を手動で修正する必要があることに注意してください。

Do this for each file を使用してパッチをビルドするdiff -u trunk/path/file branch/path/file >> patch.patch か、再帰フラグを再度渡して diff に大変な作業を行わせます。

ドライランを実行して、パッチが機能し、適切なファイルにパッチが適用されていることを確認してから、パッチを適用しpatch -p0 --dry-run < patch.patch ますpatch -p0 < patch.patch

次に、プロジェクトがビルドされていることを確認してチェックインします。

誰かが本当の答えを知っていることを期待して、この質問を開いたままにします.

于 2012-08-02T15:34:07.983 に答える