3

Subversionリポジトリデータベースに変更を加える必要がありました。ダンプを作成し、リビジョンを除外して、新しいデータベースを作成しました。

もちろん、この新しいリポジトリは、すでにチェックアウトされている古いリポジトリの作業コピークライアントと多くのコンテンツを共有していますが、その間にリビジョンがありません。

削除されたリビジョンはデータを追加せず、一部のファイルのみを変更しました。

既存のクライアントの作業コピーに大混乱を引き起こすことなく、古いサーバーデータベースを新しいデータベースに簡単に置き換えることは可能ですか?または、代わりにすべてのクライアントに新しいレポの新しいコピーをチェックアウトさせる必要がありますか?

より一般的には、Subversionクライアントはサーバー側の構造の変更にどのように対処しますか?私は主にTortoiseSVNに興味があります。

4

3 に答える 3

2

一度チェックインが破損するという問題があり、リポジトリから削除する必要がありました。作業が完了した後、いくつかのテストチェックインを実行したので、最新のリビジョン番号は、他の開発者がボックスに持っていたものと少なくとも同じでした(大きくはないにしても)。これを行うのに問題はありませんでした。

于 2012-01-20T15:30:53.983 に答える
1

ダンプでリビジョン番号が変更されておらず、UUIDが保持されている限り、大きな違いはありません。Subversionは、作業コピーファイルのリビジョン番号とリポジトリのUUIDおよびURLを追跡します。履歴が変更された場合でも、作業コピーに影響を与えることはありません。

ただし、理論と事実には常に違いがあります。ダンプとロードを行う前に、事前に開発者に警告します。私は彼らに彼らのコードをチェックインさせます。次に、ダンプとロードを実行してから、開発者にクリーンチェックアウトを実行するように指示します。

安全のために、クリーンチェックアウトを行ってください。svn status古い作業コピーに対してを実行して、変更されたがコミットされていないファイルを見つけ、それらを新しいクリーンチェックアウトにコピーすることができます。はsvn statusリポジトリにpingを送信しないため、安全な操作です。

于 2012-01-20T19:14:12.547 に答える
0

私の経験から、Tortoise SVNクライアント1.7は.svnディレクトリを着実に増やし、作業コピーの先頭で「クリーンアップ」を実行した場合にのみそれを減らします。

また、TSVNがフィルタリングされたリビジョンのログメッセージ(およびその他の詳細)をすでに確認している場合、ユーザーがこの特定のキャッシュをクリアしない限り(GUIで可能)、引き続きユーザーに表示されます。

個別のリビジョン番号を含むリビジョン全体をフィルタリングした場合(次のリビジョンがフィルタリングされたリビジョンの番号を取得するように)、古い作業コピーを保持しようとはしません。

私はあなたの質問に直接答えるためにクライアントの内部についてもっと知りません。しかし、私は同様の状況にあったので、最初にサーバーをテストすることをお勧めします。

  • 新しい(フィルタリングされた)リポジトリで「svnadminverify」を実行します

さらに、svnadminロード(またはsvnrdumpロード)は、履歴の欠落(「デルタ」)にすでに遭遇しているはずです。ただし、サーバーが実際に提供する証拠をさらに収集することをお勧めします。

新しいリポジトリから、サーバーとお気に入りのクライアントを注意深く監視しながら、警告がないか...

  1. 少なくとも、フィルタリングの影響を受けるファイルと、これらのファイルの上のディレクトリをチェックアウトしてください。(ディレクトリに他のファイルやサブディレクトリを含める必要はないと思います。)
  2. このチェックアウトを、フィルタリングされたものの前に1つのリビジョンに更新し、次にフィルタリングされたものの後に1つのリビジョンに更新します
  3. まだリビジョン番号がある場合は、フィルタリングされたリビジョンをチェックアウト/更新してみてください
  4. テスト(2.)は、ファイルがそれらのリビジョンで変更されていない場合、あまり証明されないため、必要に応じてリビジョンを更新して、フィルター処理されたファイルの前後の別の変更の前後の状態間で、すべてのファイルを切り替えます。 、 可能な場合は。履歴の「ギャップ」が問題を引き起こすかどうかを確認します。
于 2013-09-19T13:57:50.337 に答える