2009-05-19 14 views
3

私はコマンドラインSVNを使用してコードをチェックアウトしました。私は実行したいAntビルドスクリプトを用意しています。ユーザ名またはパスワードなしでsvnantを使用

私は、このような

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

として、svnantを使用したいのですが、私はこの

のように、直接のexecを行う場合は、そのは、しかし

[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 executable="svn"> 
    <arg line="commit ${dir} -m '${message}'"/> 
</exec> 

正常に動作します。奇妙なのは、svnkit="false"javahl="false"を使用すると、svnantがコマンドラインsvnを使用するようになっていることです。

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

答えて

1

ホームディレクトリのbuild.propertiesファイルに必要なsvnユーザ名とパスワードを保存し、他のユーザが読むことができないようにアクセス権を設定し、antスクリプトにロードします。

私はビルドスクリプトで認証キャッシュに頼っていました。遅かれ早かれ認証がキャッシュされないか、間違った認証がキャッシュされ、何が間違っているのかを理解するのに時間が掛かりますので迷惑です。あるいは、ビルドサーバのような別の環境でantを実行すると、svnの認証キャッシュを提供することが困難になる可能性があります。ファイルから認証情報を読み込み、そのファイルが見つからないときに明確なメッセージを出すようにantをプログラムする方が良いでしょう。

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

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