来自cron作业的svn身份验证(osx 10.7)

来自cron作业的svn身份验证(osx 10.7),svn,authentication,cron,Svn,Authentication,Cron,我设置了一个crontab条目来从svn repo中提取代码——我以前做过,所以不确定这次错过了什么。它在OSX 10.7(狮子)上 如果回购协议是公开的,那么它的运作就没有问题 如果repo是私有的(即需要user/pass),则身份验证将失败,即使缓存了我的凭据,因为通常我可以在命令行中执行此操作,而无需user/pass提示 cron生成的电子邮件告诉我,我运行的是同一个shell,我是同一个用户,主文件夹是正确的,等等,但是svn无法导出文件;我可以在cron给我发送的错误电子邮件中看到

我设置了一个crontab条目来从svn repo中提取代码——我以前做过,所以不确定这次错过了什么。它在OSX 10.7(狮子)上

如果回购协议是公开的,那么它的运作就没有问题

如果repo是私有的(即需要user/pass),则身份验证将失败,即使缓存了我的凭据,因为通常我可以在命令行中执行此操作,而无需user/pass提示

cron生成的电子邮件告诉我,我运行的是同一个shell,我是同一个用户,主文件夹是正确的,等等,但是svn无法导出文件;我可以在cron给我发送的错误电子邮件中看到,它要求输入密码,但未获得密码,然后要求输入用户密码,但未获得密码,最后失败,并显示以下消息:

授权失败:无法对服务器进行身份验证:拒绝基本质询 (我省略了具体的URL)

我尝试了--non-interactive和--config-dir选项,但运气不佳,尽管我以前从未这样做过

想法


谢谢,德克萨斯州奥斯汀的thomas blom

svn帮助公司

Global options:
  --username ARG           : specify a username ARG
  --password ARG           : specify a password ARG

试试这个。。。虽然我承认这很愚蠢,但它对我起了作用

我使用一个虚拟帐户来完成我的SVN/Cron工作,最近我遇到了与您相同的问题。OSX狮子

我可以在命令行上运行该命令,但不能通过cron运行。我无法解释这一点,因为我正忙着我的实际工作,所以我把研究工作留给你们。以下是我为解决我的问题所做的:

  • 使用SSH远程登录到您的帐户
  • 递归删除~/Library/Keychains
  • 在远程登录的同时,执行您的svn命令(我在~/.subversion/服务器中有保存密码等的设置,仅供参考)
  • 这对我有用。出于某种原因,Mac的密钥链干扰了subversion内置的save_my_身份验证方法,因为我可以在密钥链中看到LDAP/SVN命令的条目。但钥匙链似乎不是通过Cron使用的,或者。。。cron不使用Keychains:)(最后一部分可能是真的)


    显然,如果这是您的个人帐户,您可能不想删除Keychain目录!您可以尝试仅删除密钥链中的SVN条目,然后在使用SSH远程登录时执行SVN命令。

    虽然这确实有效,但似乎还需要我允许SVN将未加密的密码存储到磁盘,这不是一个好的解决方案,因为这意味着我必须存储用户名并传入cronjob等。通常情况下,如果您有缓存凭据,则不必显式提供此信息——如果在命令提示符下,我也不必提供此信息,只有在从cron作业运行时才可以使用它。@ThomasBlom-也许个人crontab将是您的解决方案?@ThomasBlom,您可以使用--config dir进行身份验证,但从中兑现身份验证更正确,我想是的,我尝试了--config dir,但运气不佳。这是一些OSX Lion问题,而不是一般的svn问题。请参阅此链接,详细描述ssg代理的同类问题。只是附带的想法:也许你会启用详细输出,将stderr重定向到日志,它会给你|我们一些食物?对于基于http的repo:“为了获得更详细的subversion操作输出,您必须在客户端启用neon调试。编辑~/.subversion/servers文件,方法是将行
    neon debug mask=130
    添加到文件的[global]部分,确保同时取消对[global]行的注释。”可能与此相关的主题(没有被接受的答案)这是另一个论坛上的同一个问题;那里的一个用户发布了如何修复ssh代理的问题,但我不确定如何将其应用到svn。不幸的是,听起来答案是“使用launchctl”。