2012-02-02 41 views
0

svn repoにsvnプロジェクトがありました。 元のrepoとしてください。Svn 1.7 - 作業コピーに存在しないリビジョンがある場合、作業コピーを再配置リポジトリに切り替える方法

これはhttp://svn/repoA/path2にコピーされました。この新しいレポと呼んでください。

オリジナルのレポからチェックアウトされたマシン上のローカル作業コピーが、このコピーの作成後に更新されました。

元のレポが削除されました。

作業コピーを新しいリポジトリに再統合したいと考えています。

svn switchがこれに適しています。プロジェクトのベースディレクトリ内で実行すると:プロジェクトは、新しいレポに存在しないリビジョン番号を持っているので

svn switch http://svn/repoA/path2 

しかし、switchは文句を言います。

svn 1.6では、私は.svn/entriesのリビジョン番号をプロジェクトベースdirの下で再帰的に変更していました。ここでは、リビジョン番号は平文として保存されています。

svn 1.7では、このような情報は、.svn/wc.dbまたは他の新しいファイルに不透明に(何らかの方法でエンコードされて)格納されているようです。

私の質問は、作業コピーが複製された改訂履歴の既存の改訂版だと思って、複製されたrepoフォルダに切り替えて更新できるようにするにはどうすればいいですか?

答えて

0

.svnのディレクトリには触れないと知っています。私は明確に言うラベルがあるにもかかわらず、あなたはまた、電子機器の背面を開くことを賭ける警告:内部にユーザーが修理可能な部品はありません。感電による突然の死亡が望まれない限り開けないでください。

はい、私もそうです。

変更されたファイルを見つけるために古い作業ディレクトリではまだsvn statusを実行してから、それらを新しい作業ディレクトリにコピーできます。 svn statusは、古いリポジトリが存在しない場合でも動作します。

または、別のディレクトリで新しい作業コピーをチェックアウトして、古い作業コピーからすべての古い.svnディレクトリを削除してから、それらのファイルのすべてを新しい作業ディレクトリにコピーすることができます。 svn statusを実行して、変更されたものを見つけ出し、それらの問題を修正することができます。

0

SVNスイッチは、通常、新しいリポジトリに存在しないファイルを削除し、新しいリポジトリに存在するファイルを追加します。しかし、あなたの場合、それに相当する改訂はありません。したがって、svn switchは実際にこの仕事に適したツールではありません。

チェックアウトされた作業レポから古い「元の」サーバレポを再構築するには、svn importを参照してください。

あなたが以前のやり方で本当にやりたければ、SVNは.svnディレクトリの数を減らしています。あなたのチェックアウトのルートに、重要な1つの.svnディレクトリがあるか調べます。また、ほとんどの情報はテキストファイルではなくSQLLiteバイナリデータベースで構成されています。 SQLLiteと互換性のあるデータベースクライアントを使用してデータベースエントリを変更することは可能です。しかし、それは非常に推奨されていません。あなたは、作業中のリポジトリを古いテキストファイルを使った場合と比べて、より多くのグーグルに陥らせる危険性が非常に高くなります。

多くの改訂履歴を削除することを目的としていましたが、改ざん番号を一致させる場合は、望ましくない履歴がないようにrepo1を再構築する必要がありますが、リビジョン番号は一致します。そのためには、

svnadmin dump /path/to/repo2 -r<start>:<end> > svn.dump 
svnadmin create /path/to/repo1 
svnadmin load /path/to/repo1 < svn.dump 

それとも私の偽物の例では、8323をrevは歴史の最後のビットが保持されるようになり、現在のREVは情報のため9929.

svnadmin dump /path/to/repo2 -r8323:9929 > svn.dump 
svnadmin create /path/to/repo1 
svnadmin load /path/to/repo1 < svn.dump 
+0

おかげです。 wcが新しいリポジトリと祖先を共有していて、共有する共通のリビジョン以降変更されていないので、リビジョン番号を変更すると思っていました。私は、最も単純な方法を探していますが、最善の方法は、間違った差分を上書きしないで衝突情報を生成する方法です。 – KomodoDave

関連する問題