SVNリポジトリとマージしたいサブディレクトリとファイルを含むフォルダがあります。どうやってやるの?マージしたいフォルダ内のファイルは別のフォルダの下にある可能性があることに注意してください。たとえば
/folder/dir1/file.cpp
、フォルダ
/src/dir2/file.cpp
内のリポジトリの下にある可能性があります
質問する
73 次
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@R1
WC がない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 version
WC では 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 に答える