2

私は一見単純に見えることをしようとしていますが、問題があります。

基本的に、私はsvnリポジトリを持っており、リビジョン122から作成されたトランクとブランチがあります。

ブランチにファイル(src / utils / foo.py)を追加し、リビジョン128としてコミットしました。すべて問題ありません。

ただし、ブランチで必要なトランクへのコミット(つまり、(123,124,125,126,127))がいくつかあります。したがって、次のようにします。

$ svn merge -r122:127 ^/projects/my_project/trunk/src/utils .
--- Merging r123 through r127 into '.':
D    foo.py

おっと!ファイルが削除されました!これが起こらないように私は何を間違っているのですか?

4

3 に答える 3

1

それは、ファイル自体よりも、ファイルを所有するフォルダーに関係している可能性があります。ほとんどのSCMツールは、バージョン管理されるという点でフォルダーをファイルのように扱うと思います。「utils」フォルダも確実にマージされるように、1レベル上に移動する必要がある場合があります。

編集:

もう少し説明すると、ファイル「foo.py」がその子であることを記録するのはフォルダ「utils」であるため、foo.pyがトランクに存在する場合でも、更新されたutilsフォルダをマージしないと表示されない場合があります。 。

于 2011-12-08T14:28:22.317 に答える
1

まず、svn mergeコマンドを実行した正しいディレクトリにいますか?次に、SVNのサブフォルダーのみをマージすることはありません。使用するだけ

svn merge ... ^/projects/my_project/trunk 

作業コピーのルートに。これは、特にマージ履歴(svn:mergeinfo)との関係でより良くなります。

于 2011-12-08T14:52:13.717 に答える
0

ああ!誰かが実際にブランチをトランクにマージし、ファイルをトランクに追加しましたが、そのコミットをロールバックして、ファイルをトランクから削除しました。助けてくれてありがとう。svnマージがどのように機能するかについての良いレッスン。

于 2011-12-08T15:14:00.083 に答える