1

現在、ブランチからの変更をトランクにマージしようとしています。ブランチの変更により、トランク内の各プロジェクトの名前がブランド解除されます。簡単にするために、トランクのルートは次のようになります...

company-name-services
company-name-security
company-name-web

そして枝はそのように見えます...

services
security
web

ブランチを現在の状態にするために、次のコマンドがブランチで実行されました...

svn mv company-name-services services
svn mv company-name-security security
svn mv company-name-web web

その後、ブランチとトランクの両方でコードの変更が行われました。マージを実行しているので、トランクの作業コピー内で、Tortoise SVN を使用してマージ タイプとして「ブランチの再統合」を選択し、実行の結果としてブランチへのパスを「From URL」として選択しました。これは現在、作業コピーに含まれています...

company-name-services
company-name-security
company-name-web    
services
security
web

フォルダー company-name-* は削除対象としてマークされ、他のブランド名が削除されたフォルダーは追加対象としてマークされます。商標が削除されたプロジェクト フォルダ内のすべてのファイルに関連する履歴情報がなく、トランクで発生したさらに悪い変更が商標が削除されたフォルダに存在しないという問題があります。svnコマンドラインツールを使用してフォルダーの名前が変更されたことを考えると、SVNはトランクから変更を取り込み、マージ後に履歴を保持するのに十分なほどインテリジェントであると思いました。私が受け取っている結果は期待どおりですか、それともマージを実行する必要がある他の方法はありますか?

4

3 に答える 3

1

これが発生した理由を理解するには、svnがどのようにマージするかを理解する必要があります。

ブランチをトランクにマージして戻すと、実際にはブランチで行われたすべての変更がトランクにマージされます。マージするとき、svnはブランチからすべてのコミットを取得し、トランクに対して同じ変更を1つずつ実行します。

ブランチに対して行った最初の変更とおそらく最初のコミットはルートディレクトリの名前を変更することだったので、svnはトランクでも同じことを行います。

ブランチの各サブフォルダーをトランク内の対応するサブフォルダーに手動でマージすることで、これを克服できると思います。このためのTortoisコマンドはわかりませんが、コマンドラインは次のようになります(トランクのルートフォルダーから開始すると仮定します)。

> cd company-name-services
> svn merge -r <insert first revision after rename>:HEAD <insert url to sub-folder in branch> .

サブフォルダごとになど

于 2011-03-24T17:54:17.583 に答える
1

svn mvブランチを作成する方法が間違っていました。それは動きます。svn cpトランクのコピーをブランチに作成する を使用する必要がありました。または、まず TortoiseSVN を使用してブランチを作成し、それを再度使用してマージを行う必要があります。

あなたがしたことは、トランクをブランチに移動し、ブランチで作業してから、ブランチをトランクに戻しました。保持する個別の履歴はありません。

SVN の本、具体的にはChapter 4, Branching and Merging小見出しを参照してくださいCreating a Branch

于 2011-03-24T17:58:27.870 に答える
0

コメントに必要な担当者がまだいません。

@Ken私の投稿では明確ではないかもしれません.Tortoiseを使用svn mvしてブランチを作成し、このようなものと同等であると思われるコマンドを発行するために使用しませんでした...

svn cp http://my.server/repos/myRepo/trunk \
    http://my.server/repos/myRepo/branches/my-branch 

コマンドラインで、次にブランチ内からsvn mvコマンドを発行して、リポジトリのルートにあるフォルダーの名前を変更しました。

@sstendal朝に仕事に着いたときにあなたの提案を試して、結果を返信します。

于 2011-03-24T23:56:53.123 に答える