1

トランクから SVN ツリーの開発ブランチにマージするときに問題があります。

プロジェクトの経緯はこうです。それはたった1本のトランクから始まりました。リビジョン 207 について、最初のブランチが作成されました。その後、リビジョン 331 で、対象のブランチがトランクから分割されました。

現在、リビジョン 384 です。331 の間の変更のほとんどは、対象のブランチに対して行われていますが、いくつかはトランクに対して個別に行われています。

枝が幹と調和するように、幹から枝にマージしたかったのです。だから私は正式にそうしました:

svn merge ^/trunk .

しかし、あらゆる種類の競合が発生していることに気付きました。いくつかの競合は理解できるかもしれませんが、ツリー内のほとんどすべてのディレクトリとファイルが影響を受けます。

さらに悪いことに、これらの主張されている競合のほとんどは、実際には 207 から 331 の間にトランクにコミットされた変更であるため、ブランチがトランクから分割されて以来、すでにブランチに組み込まれています。

それよりも悪いことは、予想される競合の多くがツリーの競合であり、207 から 331 の間で削除または名前変更されたファイルが関係していることです。ブランチにはもう存在せず、実際にそこに存在するべきではないため、問題を解決する方法がわかりません。

ほとんどすべてのファイルでブランチが正しいため、修正は複雑です。したがって、ブランチのコピーを受け入れた後にマージインすると、コミットするものが何もないため、サーバーはマージが実際に実行されたというヒントを取得しません。アウト。

私はそれを修正するためにいくつかのことを試みました:

svn cleanup

これは何の関係もないように思えました。

svn checkout ^/branches/branch-of-interest new-local-copy-of-branch-of-interest

この問題は、チェックアウトの新しいコピーでも解決されませんでした。

svn merge --record-only -r207:331 ^/trunk .

興味深いことに、おそらく「レコードのみ」のマージは、ローカル コピーのファイルも変更しようとしました。

svn merge ^/trunk .

これにより、レコードのみのマージで苦労した後でも、競合とツリーの競合が山積みになり、それが適用した変更 (レコードのみのマージ) を苦労して解決しました。

また、私が始めたとき、私のクライアントは 1.6.17 で、サーバーは 1.4.6 でした。ただし、サーバーも1.6.17にアップグレードされており、問題は解決していません.

この問題を解決するために人々が見つけた方法はありますか? 完全なマージを実行してファイルを 1 つずつ解決するには、信じられないほど時間がかかります。この時点では、明らかな理由から、次回 SVN が同じことを実行しようとしないという自信さえありません。私をもう一度。

4

1 に答える 1

0

問題は、リポジトリに関連付けられているデータベースのバージョンにあることが判明しました。クライアントとサーバーが最新バージョンにアップグレードされた後でも、データベースはマージを追跡しない古い形式のままでした。

最新のデータベース バージョンにアップグレードすると問題が解決し、問題なくマージできるようになりました。特に、サーバーとレポをホストするマシンでこれらのコマンドを使用しました。

svnadmin upgrade /path/to/repository
svn-populate-node-origins-index /path/to/repository
于 2011-09-08T17:46:38.243 に答える