3

コマンドラインSVNを使用してコードをチェックアウトしました。実行したいAntビルドスクリプトがあり、完了時にコミットを実行します。

次のようなsvnantを使用したい

<svn svnkit="false" javahl="false" failonerror="true">
    <commit dir="${dir}" message="${message}"/>
</svn>

しかし、それは機能せず、このエラーを引き起こします

[svn] <Commit> started ...
[svn] svn: Commit failed (details follow):
[svn] svn: OPTIONS of 'http://svn.local/path/to/my/proj': authorization failed (http://svn.local)
[svn] <Commit> failed !

ただし、このように直接execを実行すると

<exec executable="svn">
    <arg line="commit ${dir} -m '${message}'"/>
</exec>

それはうまくいくでしょう。奇妙なことに、とを使用するsvnkit="false"javahl="false"、svnantにコマンドラインsvnを使用させることになっています。

では、ここで何が起こっているのでしょうか。コマンドラインsvnは明らかにそれを必要としないので(キャッシュされている)、svnant呼び出しでユーザー名/パスワードを指定する必要はありません。

4

1 に答える 1

1

シンプルで信頼性の高いソリューションは、目的のsvnユーザー名とパスワードをホームディレクトリのbuild.propertiesファイルに保存し、他のユーザーが読み取れないようにアクセス許可を設定して、それをantスクリプトにロードすることです。

私はビルドスクリプトで認証キャッシングに依存していましたが、遅かれ早かれ認証がキャッシュされないか、間違った認証がキャッシュされ、何が悪いのかを理解しようとすると時間が無駄になるため、面倒です。または、ビルドサーバーなどの別の環境でantを実行することを決定する場合があります。これにより、svnの認証キャッシュへのフィードが困難になります。ファイルとプログラムantから認証情報をロードして、そのファイルが欠落しているときに明確なメッセージを表示することをお勧めします。

また、svnkitコマンドラインクライアントを使用して認証をキャッシュし、antを介して使用した場合でもそれが機能するかどうかを確認することもできます。

このスレッドは同じ問題について話します:http://www.nabble.com/svnant-and-authentication-td17865407.html

于 2009-05-19T18:00:41.367 に答える