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

command-line svn

ユーザーが指定した名前に基づいて、リポジトリに新しいプロジェクトを追加するスクリプトを書いています。 その一部として、同じ名前の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)で使用できる適切なコマンドがまったく表示されません。

  40  8


ベストアンサー

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

両方

svn lsリポジトリ/パス

そして

svn infoリポジトリ/パス

すべてうまくいった場合は0を返し、うまくいかなかった場合は1を返します。あなたはすぐにそれをチェックアウトすることができます:

エコー$?

bashスクリプトでは、次のようにします。

エラー= $? if [$ error -ne 0];それからあなたのエラー処理fi

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

43


そのまま使えます

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

リポジトリ(ディレクトリ)が存在するかどうかがわかります。

更新

多くのファイルがあるディレクトリには

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

42


既存のリポジトリに関する情報を受け取る(例: エラーメッセージを多分豊かにするために)

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

存在しないプロジェクトの場合は単に戻るだけです

svn:要求されたSVNファイルシステムを開けませんでした

8


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

未知のパスにアクセスするのではなく、親フォルダのディレクトリリストを取得し、一致するものが含まれているかどうかを確認します。

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

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

その後、プロジェクトフォルダが存在することを確認してください。 プロジェクト名の後に必ず「+ / +」*を追加してください。

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

簡単です。

2


私は既存の答えについてコメントしたと思いますが、私は十分な評判を持っていません。

ファイルが正常にインポートされたかどうかを知りたかったので、 “echo $?”で “svn info”と “svn ls”を試しました。 “svn ls”を使用したときに、ゼロまたはゼロ以外のリターンコードしか取得できなかった。

これはRedhat RHEL6でのバージョン1.5.5のものでした。

1


@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


タイトルとURLをコピーしました