buildbot svn-builtins.OSError: (2, 'CreateProcess', '系统找不到指定的文件。')

为了能够和svn配合使用,在修改配置文件后,测试了master,发现遇到如下问题:

      File "f:\sandbox\lib\site-packages\twisted\internet\defer.py", line 654, in _runCallbacks
        current.result = callback(current.result, *args, **kw)
      File "f:\sandbox\lib\site-packages\buildbot\changes\svnpoller.py", line 186, in <lambda>
        d.addCallback(lambda _: self.get_prefix())
      File "f:\sandbox\lib\site-packages\buildbot\changes\svnpoller.py", line 215, in get_prefix
        d = self.getProcessOutput(args)
      File "f:\sandbox\lib\site-packages\buildbot\changes\svnpoller.py", line 204, in getProcessOutput
        d = utils.getProcessOutput(self.svnbin, args, self.environ)
      File "f:\sandbox\lib\site-packages\twisted\internet\utils.py", line 128, in getProcessOutput
        reactor)
      File "f:\sandbox\lib\site-packages\twisted\internet\utils.py", line 28, in _callProtocolWithDeferred
        reactor.spawnProcess(p, executable, (executable,)+tuple(args), env, path)
      File "f:\sandbox\lib\site-packages\twisted\internet\posixbase.py", line 353, in spawnProcess
        return Process(self, processProtocol, executable, args, env, path)
      File "f:\sandbox\lib\site-packages\twisted\internet\_dumbwin32proc.py", line 232, in __init__
        raise OSError(pwte)
    builtins.OSError: (2, 'CreateProcess', '系统找不到指定的文件。')

于是乎,定位到 File "f:\sandbox\lib\site-packages\twisted\internet\_dumbwin32proc.py", line 232,添加了部分代码,监测这里的变化,发现,createprocess在执行win32process.CreateProcess(‘svn’,'svn info --xml --non-interactive file:///F:/localSVN/trunk/HelloWorld',None,None,1,win32con.CREATE_NO_WINDOW,None,None,win32process.STARTUPINFO())时会报错。

一开始就感觉到时第一个参数的问题。于是在cmd下测试cmdline:svn info --xml --non-interactive file:///F:/localSVN/trunk/HelloWorld,一切正常。百思不得其解啊!百度也没有,不死心,怀疑是python调用createprocess的问题,于是测试了用python结合createprocess调用记事本,一切OK。。。。

最后,没办法,直接找到svn的bin路径,直接给定绝对路径,测试OK。

这就奇怪了,明明系统变量里是有svn的,怎么不能用呢?到现在也不知道怎么回事,回头继续研究吧!

目前,现在代码里面cover了,将F:\sandbox\Lib\site-packages\twisted\internet\_dumbwin32proc.py中,在219行加入

if command=="svn":
    command='C:\\Program Files (x86)\\VisualSVN\\bin\\svn.exe'

后来发现其实这个svn是可以在配置文件中指定的:

c['change_source'].append(changes.SVNPoller(repourl="file:///F:/localSVN/trunk/HelloWorld",
svnuser=None, svnpasswd=None,pollInterval=10,project='HelloWorld',
svnbin='C:\\Program Files (x86)\\VisualSVN\\bin\\svn.exe',split_file=util.svn.split_file_branches))


在SVNPoller(F:\sandbox\Lib\site-packages\buildbot\changes\svnpoller.py)的class中也有体现,

def __init__(self, repourl, split_file=None,
    svnuser=None, svnpasswd=None,
    pollInterval=10 * 60, histmax=100,
    svnbin='svn', revlinktmpl='', category=None,
    project='', cachepath=None, pollinterval=-2,
    extra_args=None, name=None, pollAtLaunch=False):

一开始真的是糊涂啊!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值