2

SVNリポジトリとマージしたいサブディレクトリとファイルを含むフォルダがあります。どうやってやるの?マージしたいフォルダ内のファイルは別のフォルダの下にある可能性があることに注意してください。たとえば /folder/dir1/file.cpp、フォルダ /src/dir2/file.cpp内のリポジトリの下にある可能性があります

4

3 に答える 3

3

序文:本当にSVN Bookを読む必要があります!

問題の説明からは、初期状態について明確な結論を出すことができないため、両方の選択肢について説明します

両方のバージョンの出発点

あなたが持っている:

  • somefile of old version
  • patched somefile of old version
  • 更新しましたsomefile of new version

あなたはのリビジョンを知っていますsomefile of old version

古いリビジョンをR1とする

  • このリビジョンを取得: svn co REPO@R1WC がないsvn up -r R1場合、既存の WC がある場合
  • WCで次のように置き換えsomefile of old versionますpatched somefile of old version
  • その他の変更を取得: svn up. R1 と HEAD の間のすべての変更はsomefileにマージされpatched somefile of old versionます: 競合が検出されない場合は自動的に、または競合を手動で解決するためにマージ ツールを使用する場合 (マージ ツールが構成されている場合)、その結果、patched somefile of new versionWC では not- として表示されます。保存するためにコミットする必要がある commited-local-change

のリビジョンがわからないsomefile of old version

  • OS diff を使用して、somefile of old versionおよびからパッチを生成します。patched somefile of old version
  • 取得somefile of new version(svn upまたはを参照svn co)
  • p.1 からパッチを適用してみてくださいsomefile of new version
于 2012-12-03T17:45:52.243 に答える
0

私は次のようにします:

リポジトリを作業コピーにチェックアウトします。次に、マージするファイルを適切なファイルに移動 (置換!) します。これは明らかではないため、1 つずつ行う必要があります。完了したらsvn diff、変更できます。

(技術的には、それはマージではありませんが、本当にマージが必要かどうかはわかりません:))

于 2012-12-03T15:46:18.770 に答える
0

他の回答に示されている解決策が何らかの理由で実際に機能しない場合は、これを試してみてください。より複雑ですが、機能しない理由がわかりません。

  • リビジョン 0 をファイルにダンプします。
  • リビジョンを別のファイルにダンプします。
  • 新しいレポを作成し、最初のダンプをインポートします。
  • その新しいリポジトリヘッドをチェックアウトし、ファイルを置き換えてチェックインします。
  • 2 番目のダンプのリビジョンを新しいリポジトリにインポートします。

そうすれば、リポジトリの途中に追加のリビジョンを挿入できます。自分でそれをしたことはありませんが、なぜですか?古いレポをしばらく保持するようにしてください...あなたは決して知りません...

于 2012-12-03T19:15:15.670 に答える