2009-09-28 15 views
8

svnリポジトリのディレクトリ名を変更することは可能ですか?リポジトリ内のディレクトリ名をsvndumpfilterで変更することはできますか?

このディレクトリの名前が変更される新しいリビジョンを作成しません。

このディレクトリの名前は、最初のリビジョンから変更したいと思います。

私の知る限り、svndumpfilterユーティリティはこれに使用できます。

正しいですか?

誰でも私に小さな例を教えてもらえますか?

答えて

7

あなたはのsvnadminリポジトリ、プロセスのダンプファイルとsvnadminは負荷空のレポで処理されたファイルをダンプする必要があります。いいえsvndumpfilterが必要です。

svnadmin dump /repos/path > old.dump 

ダンプファイルはSedまたは別のツール(バイナリデータが破損している取得していないことを確認してください)で処理し、ディレクトリ名を置き換えることができます。ダンプ・ファイルの処理が完了したら

sed -b -e "s#^\(Node.*path\): dir1/dir_old#\1: dir1/dir_new#" old.dump > new.dump 

:たとえば

svnadmin create /newrepos/path 
svnadmin load /newrepos/path < new.dump 
+2

sedのような単純なツールでsvnダンプのような複雑なデータ構造を処理しません。文字列 ':dir1'が決して他の場所に現れないことを誰も保証しません。 – reto

+2

その場合、処理されたファイルを読み込むときに「チェックサムの不一致」エラーが発生します。ダンプファイルのフォーマットを参照してください:http://svn.apache.org/repos/asf/subversion/trunk/notes/dump-load-format.txt – fglez

+0

これは素晴らしいです。できます。それは、svnのダンプでフォルダを移動する方法を唯一の簡単な方法! – qub1n

3

を、それはファイル形式を認識しないと、あなたがかもしれないので、私は確かに、sedを使用するないをお勧めします簡単にSVNダンプファイルを使用不可能にします。

さらに、単なるパス以外のものを置き換える場合は、SHA1とMD5のチェックサムを更新するか、単純に削除する必要があります。

SVNダンプを修正することは、それが最初のように思えるほど簡単ではありません。

私は同じ問題を昨日持っていました。私はこの目的のために少しのプログラムを書いていました。

https://github.com/nlmarco/svndumptransformer

それはフリーソフトウェアだとあなたが/欲しいより多くの機能が必要な場合は、それを変更することを歓迎している:私は、誰もが使用するためにここにそれを発表しました。

このプログラムは、テキストコンテンツ(ファイルなど、イメージなど)がmime-type "application/octet-stream"とマークされている場合は変更しません。 SVNダンプ形式を実際に読み込んで理解しているので、上記のsedコマンドとは異なり、SVNダンプに属する構造データは変更されません。

このプログラムは現在、製品の名前を変更する際にうまくいきます。すべてのパスとプロジェクト構成ファイル(=> gradle)と数十のJavaクラスの名前が変更されます。

このプログラムは他の人にも役立つことを願っています。

Btw。私はこの質問が非常に古くなっていることを知っていますが、私の答えがこの問題に遭遇した他の人に役立つことを願っています。

関連する問題