2009-05-19 11 views
3

Ich habe Code mithilfe der Befehlszeile SVN ausgecheckt. Ich habe ein Ant-Build-Skript, das ich ausführen möchte, das ein Commit durchführt, wenn es fertig ist.Verwenden Sie Svnant ohne einen Benutzernamen oder ein Passwort

Ich möchte svnant verwenden, wie

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

aber seine nicht funktioniert und geben diesen Fehler

[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 ! 

Wenn ich jedoch eine exec direkt tun, wie diese

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

wird es gut funktionieren. Was ist seltsam ist, dass mit svnkit="false" und javahl="false" soll svnant die Befehlszeile svn verwenden.

Also, was ist hier los? Ich sollte nicht den Benutzernamen/das Passwort in dem Svnant-Aufruf angeben müssen, da die Befehlszeile svn es eindeutig nicht benötigt (es wurde zwischengespeichert).

Antwort

1

Die einfache und zuverlässige Lösung ist die gewünschten SVN Benutzername und Passwort in einer build.properties Datei in Ihrem Home-Verzeichnis zu speichern, Berechtigungen, so dass keine andere Benutzer sie lesen können, und laden Sie das in Ihrem Ant-Skript.

Ich habe in Build-Skripten auf Auth-Caching angewiesen und es ist ärgerlich, weil früher oder später die Authentifizierung nicht zwischengespeichert wird, oder die falsche Authentifizierung zwischengespeichert wird und Sie Zeit verschwenden, während Sie versuchen zu erkennen, was falsch ist. Oder Sie entscheiden sich für ant in einer anderen Umgebung, wie einem Build-Server, die es schwierig macht, den Authentifizierungscache von svn zu füttern. Es ist besser, Ihre Authentifizierungsinformationen aus einer Datei und einem Programm zu laden, um eine klare Nachricht zu geben, wenn diese Datei fehlt.

Sie können auch versuchen, den svnkit-Befehlszeilenclient zu verwenden, um Ihre Authentifizierung zwischenzuspeichern und zu sehen, ob das bei Verwendung über ant noch funktioniert.

Dieser Thread behandelt die gleichen Probleme: http://www.nabble.com/svnant-and-authentication-td17865407.html