4

通常、これは手動で行います。

  1. mkdir -p folder1/foder2/folder3
  2. cd folder1/foder2/folder3
  3. svn export svn://127.0.0.1/svn/app1/branches/branch1/folder1/foder2/folder3/file1.txt

手順1と2を実行する必要のない方法またはストレートsvnexportコマンドはありますか?svnがSVNからローカルマシンへのディレクトリ構造を自動的に作成するもっと簡単な方法があることを願っています。

ありがとう!

4

4 に答える 4

1

さて、相対パスを作成するbashスクリプトを思いつきました。私はbashスクリプトについての深い知識がないので、これはちょっと醜いです。私を許してください。しかし、うまくいけば、これはアイデアをかき立てます。

svn_export.sh

#!/bin/sh
for var in "$@"
do
    svnArg1=$var;
    svnArg2=`echo "$svnArg1" | sed -e 's/file:\/\/\/usr\/share\/svn\///'`;

    tempDir=`dirname $svnArg2`;
    tempFile=`basename $svnArg2`;
    if [ -n "$tempFile" ]; then

        if [ ! -d "$tempDir" ]; then
            echo "mkdir -p $tempDir";
            echo `mkdir -p $tempDir`;
        fi    

        echo "svn export $svnArg1 $svnArg2";
        echo `svn export $svnArg1 $svnArg2`;

    fi

done

exit 0;

使用法:

sudo svn diff -r 1:HEAD --summarize file:///usr/share/svn/TestRepository/ | awk '{print $2}' | xargs ./svn_export.sh

出力

A TestRepository/trunk/test2.txt Export complete.
A TestRepository/trunk/test3.txt Export complete.
A TestRepository/trunk/test.txt Export complete.

file:\/\/\/usr\/share\/svn\/したがって、基本的には、引数のこの文字列をsvnURLに変更するだけでsed済みます。

例:svn:\/\/127.0.0.1\/svn\/project1\/branches\/

したがって、使用法は次のようになります。

svn diff -r 1540:HEAD --summarize svn://172.0.0.1/svn/project1/branches/branch1 | awk '{print $2}' | xargs ./svn_export.sh

お役に立てれば!

于 2013-02-07T08:13:45.873 に答える
0

リポジトリに既知のハードコードされたパスの場合- はい、エクスポートに宛先パスを(手動で)書き込むだけです

svn export svn://127.0.0.1/svn/app1/branches/branch1/folder1/foder2/folder3/file1.txt folder1/foder2/folder3/file1.txt

動的に変更可能な相対パスの場合 - いいえ、事前に作成された内部オプションはありません。svnlookただし、リビジョンのコンテンツをリポジトリからエクスポートすると、サブコマンドと独自のロジックをコードで実装できます。

于 2013-02-07T02:26:19.640 に答える