svn - 使用不带用户名或密码的svnant

标签 svn ant svnant

我已经使用命令行SVN checkout 了代码。我有一个要运行的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 executable="svn">
    <arg line="commit ${dir} -m '${message}'"/>
</exec>

它将正常工作。奇怪的是,应该使用svnkit="false"javahl="false"使svnant使用命令行svn。

那么这是怎么回事?我不必在svnant调用中指定用户名/密码,因为命令行svn显然不需要它(已被缓存)。

最佳答案

一种简单,可靠的解决方案是将所需的svn用户名和密码存储在主目录中的build.properties文件中,设置权限,以便其他用户都无法读取它,并将其加载到您的ant脚本中。

我依靠构建脚本中的身份验证缓存,这很烦人,因为迟早不会缓存身份验证,或者会缓存错误的身份验证,并且您会浪费时间来尝试找出问题所在。或者,您可能决定在其他环境(例如构建服务器)中运行ant,这使得难以提供svn的身份验证缓存。最好从文件和程序ant加载身份验证信息,以便在缺少该文件时发出清晰的消息。

您也可以尝试使用svnkit命令行客户端来缓存身份验证,并查看通过ant使用该身份验证是否仍然有效。

该线程讨论相同的问题:http://www.nabble.com/svnant-and-authentication-td17865407.html

关于svn - 使用不带用户名或密码的svnant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/883872/

相关文章:

git - 源代码管理问题

javascript - Rhino JS 在函数返回期间错误地将 JSON 字符串转换为对象

maven-2 - 当maven-antrun-plugin失败时,Maven构建失败

svn - 使用 gradle 结帐 svn

svn - 如何让 svnant/svnkit 提示输入用户名/密码

asp.net - 是否可以从没有这些.svn文件夹的子版本中 check out 文件?

visual-studio-2008 - 如何使用 AnkhSVN 在 Visual Studio 中切换 subversion 存储库?

svn 只记录前 10 个

Ant 的可选任务在 CentOS 上不可用

java - 使用 Ant 回显 SvnAnt 错误消息的单行