我已经使用命令行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。
那么这是怎么回事呢?我不应该在svnant调用中指定用户名/密码,因为命令行svn显然不需要它(它已被缓存)。
发布于 2009-05-19 18:00:41
简单、可靠的解决方案是将所需的svn用户名和密码存储在主目录的build.properties文件中,设置权限使其他用户无法读取它,然后将其加载到您的ant脚本中。
我在构建脚本中依赖于身份验证缓存,这很烦人,因为身份验证迟早不会被缓存,或者错误的身份验证将被缓存,而当您试图了解错误的地方时,您将浪费时间。或者,您可能决定在一个不同的环境中运行ant,比如构建服务器,这会使提供svn的身份验证缓存变得困难。最好从一个文件中加载身份验证信息,并编写ant程序,以便在该文件丢失时给出一条清晰的消息。
您还可以尝试使用svnkit命令行客户端缓存您的身份验证,并查看在通过ant使用时是否仍然有效。
这个帖子谈到了同样的问题:http://www.nabble.com/svnant-and-authentication-td17865407.html
https://stackoverflow.com/questions/883872
复制相似问题