2

数週間前、フリーミアムの Subversion ホストから、サイズ制限を超えているというメッセージが送信されました。これを修正しようと何度か試みた後 (そして、ダンプ -> ロード サイクルを実行してプルーニングを行わずにリポジトリを縮小することは不可能であることに気付きました)、より寛大なサイズ制限を持つ新しいホストに移行する時が来たと判断しました (そして、同時に git します。)

しかし、その間、私たちは「読み取り専用」アクセスにロックアウトされました。これは、チェックインされていない重要なローカル変更がいくつかあったため残念でした. -> ローカルの変更を機能させることができるように、サイクルメソッドをロードして再び作業を開始します。すべてのローカル バックアップを作成した後、実際には最新リビジョン (r525) 以外のすべてをダンプしました。

これはすべてうまくいきました。ホストの助けを借りて長いプロセスを経た後、リポジトリを正常にダンプしてリロードし、リビジョン 1 になりました。

しかし、現在、クライアントはリビジョン 525 の作業コピーであると考えているため、既存の作業コピーの更新を拒否しています。

svn: A reported revision is higher than the current repository HEAD revision.

問題は、私の作業コピーを「修正」して、リビジョン 1 であると見なすことは可能かということです。

新しい作業コピーをチェックアウトするだけでよいことはわかっていますが、繰り返しますが、ローカル編集がいくつかあり、可能であればそれらを統合したいと考えています。

4

3 に答える 3

0

最も安全な方法は、おそらく、変更を加えたパッチ(または複数のパッチ(複数の作業コピーの変更について話している場合))を作成することです。これは、リポジトリに接続せずに「オフライン」で実行できます。次に、新しい作業コピーをチェックアウトし、パッチを適用します。

でパッチを作成し、svn diff > patch.diffで適用しますsvn patch

バイナリの問題について:変更されたバイナリを新しい作業コピーに再帰的にコピーするスクリプトを作成できます。を使用して変更されたファイルのリストを作成svn statusし、拡張子またはその他のプロパティでそれらを除外できます。

于 2012-05-29T17:06:16.283 に答える
0

競合するフォルダーから非表示の .svn ファイルを削除し、HEAD に更新します。ローカルの変更が保持されます。

于 2012-10-31T02:36:58.303 に答える
0

Subversion の新しいバージョンでは、sqlite を使用して作業コピー データベースを変更できますが、これはかなり危険であり、物事を完全に壊してしまう可能性があります。試してみたい場合は、こちらの方法をご覧ください。

最初に、リモート リポジトリの最新リビジョンが次の場所にあることを確認します。

$ svn info https://example.com/svn/project/trunk/
Path: trunk
URL: https://example.com/svn/project/trunk
Repository Root: https://example.com/svn
Repository UUID: fdecad78-55fc-0310-b1b2-d7d25cf747c9
Revision: 86002 <-- This is the value you want
Node Kind: directory
Last Changed Author: user@example.com
Last Changed Rev: 49367
Last Changed Date: 2008-05-23 17:01:34 +0100 (Fri, 23 May 2008)

次に、sqlite DB を編集し、リビジョンをリポジトリで見られる最新のものに変更します。

cd .svn
$ sqlite3 wc.db 
SQLite version 3.7.13 2012-07-17 17:46:21
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> update nodes set revision = 86002 where revision > 86002;
sqlite> .exit
$ cd ..
$ svn up
Updating '.':
At revision 86002.

プロジェクトで最近のコミットが行われた場合は、次の SQL を実行する必要がある場合もあります。

update nodes set changed_revision = 86002 where changed_revision > 86002;
于 2014-03-27T16:12:40.677 に答える