web-dev-qa-db-ja.com

SVNリポジトリのURLが存在しないことを確認してください

ユーザーが指定した名前に基づいて、リポジトリに新しいプロジェクトを追加するスクリプトを作成しています。これには、同じ名前のURLがまだリポジトリに存在しないことの確認が含まれます。

リポジトリでは、私たちのチームのすべてのプロジェクトがに保存されます

https://developernetwork.repo.net/svn/Projects/

ユーザーがプロジェクト「Calculator」を呼び出してスクリプトを実行したいとします。この場合、以下がリポジトリに存在しないことを確認する必要があります

https://developernetwork.repo.net/svn/Projects/Calculator/

それを達成するために使用できるsvnコマンドはありますか?残念ながら、svnドキュメント( http://svnbook.red-bean.com/en/1.0/svn-book.html )で使用できる適切なコマンドがまったく表示されません。

42
Andy

あなただけを使用することができます

svn ls https://developernetwork.repo.net/svn/Projects/Calculator/

リポジトリ(ディレクトリ)が存在するかどうかを教えてくれます。

更新

多くのファイルがあるディレクトリの場合:

svn ls http://server/svn/foo --depth empty
45
Liwen

戻り文字列をチェックする代わりに、戻りコードをチェックするだけです。

どちらも

svn ls REPOSITORY/PATH

そして

svn info REPOSITORY/PATH

すべてうまくいった場合は0を返し、問題が発生した場合は1を返します。すぐに確認できます。

echo $?

そのため、bashスクリプトでは次のようなことを行うだけです。

error=$?
if [ $error -ne 0 ]; then
      YOUR ERROR HANDLING
fi

御treat走のように動作します!

46
Stefano

既存のリポジトリに関する情報を受信するには(たとえば、エラーメッセージを充実させるため)

svn info https://developernetwork.repo.net/svn/Projects/Calculator/

存在しないプロジェクトの場合は、単に戻ります

svn: Could not open the requested SVN filesystem
9
amain

私は上記の問題に直面し、私はずっと試しました。私のために動作しません.. svnにないパスでsvnにアクセスすると、エラーで失敗し、シェルスクリプトが壊れます。

不明なパスにアクセスする代わりに、親フォルダのディレクトリリストを取得し、一致するものに含まれているかどうかを確認します。

親ディレクトリからすべてのプロジェクトを取得します(特定のタグを検索する場合、親ディレクトリのパスはhttps://developernetwork.repo.net/svn/Projects/Calculator/tags

projects=$(svn ls https://developernetwork.repo.net/svn/Projects/)

次に、プロジェクトフォルダーが存在することを確認します。 add /プロジェクト名の後。

projectName="Calculator/"
for i in $projects; do 
    if [ "$i" == "$projectName/" ];
        then
        echo Project Exist
        else
        echo Project does not exist
    fi
done 

シンプル。

2
damithH

既存の回答についてコメントしていましたが、十分な評判はありません。

ファイルが正常にインポートされたかどうかを確認したかったので、「echo $?」で「svn info」と「svn ls」を試しました。 「svn ls」を使用した場合にのみゼロ/ゼロ以外のリターンコードを取得できました。「svn info」は常にゼロを返しました。

これは、Redhat RHEL6上のSubversion 1.5.5で発生しました。

1
A Scott

@A Scottが言うように、echo $?を使用してURLが正しいかどうかを知ることはできません(Mac OS 10.11およびSVNクライアント1.9.5を使用しています)。

潜在的な将来の読者のために、私はこの回避策を使用します:

content=$(svn info $SVN_TAG_URL)

if [[ -z $content ]]; then
    echo "The SVN URL doesn't exist"; exit
fi
0
pom421