2

X と Y の 2 つのブランチがあります。Y のサブディレクトリ (y1) を X (x1) と同等のものに置き換えたいと考えています。

とりあえず、次のことを行います: x1 を Y にコピーし、y1 を削除し、x1 を y1 に名前変更 (移動) します。

a) svn copy https://path/to/branches/X/x1 https://path/to/branches/Y/
b) svn delete https://path/to/branches/Y/y1
c) svn move https://path/to/branches/Y/x1 https://path/to/branches/Y/y1

かなりヤバイと思います…

どうすればよりスマートな方法でそれを行うことができますか?

4

4 に答える 4

3

本当にディレクトリを置き換えたい場合は、次の 2 つの操作で行うことができます。

svn delete https://path/to/branches/Y/y1
svn copy https://path/to/branches/X/x1 https://path/to/branches/Y/y1

Y/y1 が本当に既に X/y1 の古いコピーである場合は、常に置き換えるのではなく、最後のマージ以降のすべての変更をマージする必要があります。

于 2008-12-17T09:16:25.727 に答える
1

ブランチ Y を新しい作業コピーにチェックアウトし、そこに身を置く。

svn co https://path/to/branches/Y Y
cd Y

Y/y1 を X/x1 に変換するために必要な変更を Y/y1 にマージします

svn merge https://path/to/branches/Y/y1 https://path/to/branches/X/x1 y1

これをコミットする

svn commit -m "Y/y1 now has the same contents as X/x1"

y1 の名前が x1 と異なる場合 (説明から明確でない場合)、名前を変更します。

svn mv y1 x1
svn commit -m "Y/y1 now named Y/x1"

しかし、ワークフローでこのようなサブツリーのマージが必要な場合 (または、さらに悪いことに、他の投稿者が提唱している種類のツリー手術) を行う必要がある場合は、おそらく間違っています。

于 2009-10-22T13:06:44.420 に答える
1

なぜ2つのステップだけではないのですか:

a) svn delete https://path/to/branches/Y/y1
b) svn copy https://path/to/branches/X/x1 https://path/to/branches/Y/y1
于 2008-12-17T09:18:43.990 に答える
1

ブランチを移動する簡単な方法:

svn mv url1 url2 -m "commit log msg"
于 2010-11-11T08:55:18.810 に答える