2011-12-29 17 views
2

svn(Windowsのサーバー)からデータをエクスポートする必要がありますが、ルートディレクトリを含めたくありません。 例:幹と枝(ないproject1に)私が使用 :svndumpfilter include文で正規表現を使用できますか?

svnadmin dump /svn/ | svndumpfilter include --drop-empty-revs --renumber-revs /project1/trunk /project1/branches | sed "s/Node-path:[ ]project1\//Node-path: /g" -b | sed "s/Node-copyfrom-path:[ ]project1\//Node-copyfrom-path: /g" -b > project1.dump 

しかし、私はこのプロセスを自動化したいとbatファイルを作成し

svn 
-project1 
--trunk 
--branches 
-project2 
--trunk 
--branches 
--onemorefolder 

私は、フォルダをproject1.dumpする含めます:

call svnadmin dump /svn/iss/ -r %2:%3 | svndumpfilter include --drop-empty-revs --renumber-revs /%1/trunk /%1/branches | sed "s/Node-path:[ ]%1\//Node-path: /g" -b | sed "s/Node-copyfrom-path:[ ]%1\//Node-copyfrom-path: /g" -b > %4 

しかし、トランクとブランチフォルダの構造体でのみ動作します。 ルートフォルダのすべてのフォルダを含めてこのルートフォルダを除外するにはどうすればよいですか? includeステートメントでregexを使用できますか?おかげさまで あなたは一つとしてsedコマンドの両方を行うことができ

答えて

0

まず:

代わりの

sed "s/Node-path:[ ]%1\//Node-path: /g" -b | \ 
sed "s/Node-copyfrom-path:[ ]%1\//Node-copyfrom-path: /g" -b 

をあなたはNode-pathかと一致するパターンで後方参照\1を使用しています

sed "s/Node-\(copyfrom-\|\)path:[ ]%1\//Node-\1path: /g" -b 

を行うことができますNode-copyfrom-path

ルートフォルダ自体を除いて、ルートのすべてのサブフォルダについては、find <ROOTFOLDER> -type d -mindepth 1 -maxdepth 1を使用すると、ルート自体を含まないすべてのサブディレクトリが見つかる可能性があります。

おそらく(未テスト)のようなもの:

call svnadmin dump /svn/iss/ -r %2:%3 | \     # keep same 
svndumpfilter include --drop-empty-revs --renumber-revs \ 
    `find %1 -type d -maxdepth 1 -mindepth 1` | \    # used find 
sed "s/Node-\(copyfrom-|\)path:[ ]%1\//Node-\1path: /g" -b \ # combined line 
> %4 
+0

(あなたが期待するよう、彼らのすべてが機能することを確認するために、別々の個々のビットを試してみてください)答えのため –

+0

感謝。しかし、findは私のためには機能しません。 -tがsvndumpfilterの認識されたパラメータではないというエラーが発生します。 – inser

+0

hmmですが、どこでも '-t'を使用していません...期待どおりの' find'ビットの出力ですか? '%1 -type d -maxdepth 1 -mindepth 1 -printf '"%p "'を試してください。ファイル名に空白がある場合には、すべてのマッチをスペースで区切って1行に出力します。 –

関連する問題