2

svn (Windows 上のサーバー) からデータをエクスポートする必要がありますが、ルート ディレクトリを含めたくありません。例:

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

project1.dump フォルダーに含めたい: トランクとブランチ (project1 ではない) 私が使用するもの:

 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 ファイルを作成したいと思います。

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 ステートメントで正規表現を使用できますか? ありがとう。

4

1 に答える 1

0

sed最初に、両方のコマンドを 1 つのコマンドとして実行できます。

それ以外の

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

あなたができる

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

or\1に一致するパターンで後方参照を使用します。Node-pathNode-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
于 2011-12-29T12:29:00.160 に答える