9

'svn:mergeinfo' プロパティをルート ブランチ フォルダーのみに保持しようとします。ただし、サブフォルダーに忍び寄るのが見られます。いくつかの考えられる原因を特定できました。

  1. リポジトリブラウザーでのフォルダーの移動
  2. IntelliJ でのパッケージの移動および/または名前の変更
  3. 古い svn クライアントの使用

これらのプロパティを誤って作成することを避けるために、すべきでないことのリストを誰か提供できますか?

私たちが使用しているツールは、IntelliJ 8 (まもなく 9)、Ankh、TortoiseSVN、および SlikSvn です。

4

4 に答える 4

11

残念ながら、古い svn クライアントはこれを行うだけであり、これらの古いバージョンの svn に基づくツールも機能しません。この問題を解決する唯一の方法は、作成された svn:mergeinfo エントリをコミットする前に削除することです。ほとんどの人はそれらが作成されたことに気付いていないため、それを強制する唯一の実際の方法は pre-commit フックであるか、単に次のようにすることです。

svn propdel --recursive svn:mergeinfo $ROOT/*

時々それらをきれいにするために。これを行うときは注意してください。これまでに行った部分マージの記録がすべて破棄されるため、実際に部分マージを行わない場合にのみ、これを行う必要があります。質問者はそうではありませんし、私たちの環境でもそうではありません。

この問題は新しい svn クライアントで修正されているため、問題はゆっくりと解消されるはずですが、ワークフロー内のすべてのツールが置き換えられるまでには時間がかかる可能性があります。

この質問に対する別の回答に基づいて、問題の原因を簡単に説明します。作業コピーを移動または削除すると、1.5.5 より古い svn クライアントが偽の svn:mergeinfo エントリを作成しました。これはsvn 1.5.5 で解決されています。

于 2009-12-31T10:32:37.027 に答える
1

トランク以外の svn:properties へのコミットを単純に拒否する SVN フック/トリガーを作成しました。私たちは振り返りませんでした。

于 2010-11-24T12:36:40.543 に答える
0

サブフォルダーまたは個々のファイルでマージを実行すると、マージ情報を記録する必要があるため、これが発生し、発生するはずです。

最善の方法は、マージをメイン レベルで実行し、選択的に適用する必要がある場合は、マージしたくない変更を元に戻してからコミットすることです。

于 2010-01-01T02:05:47.467 に答える
0

私はそのようなリストを提供することはできません。フォルダー プロパティの変更につながるユーザー アクションをログに記録し、警告を発行するか、そのコミットを拒否する svn フックを使用することをお勧めします。

于 2009-12-31T09:47:59.647 に答える