通过Python访问时发生SVN错误

2024-10-06 11:25:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我在WindowsXP上安装了Python3.1、Subversion 1.6.12和PySVN。在

如果我打开一个Python终端

import subprocess
print subprocess.check_output(['svnlook','youngest','D:/svn-repos/myrepo'])

我得到了预期的修订号。在

但是,如果我把这个添加到Subversion的帖子中-提交.bat,失败,错误为“句柄无效”:

^{pr2}$

是什么引起的?我该怎么解决?我尝试将Subversion服务更改为以我的用户身份运行,认为这是默认系统帐户的某种权限问题,但没有效果。在

假设没有直接的解决办法,我该如何解决这个问题?我需要一些方法从SVN存储库检索最年轻的修订号,而无需本地工作副本。我翻遍了PySVN的Programmer's Reference,但找不到与“svnlook younger”对应的调用。在

编辑:我正在从邮报上调用脚本-提交.bat比如:

@ECHO OFF
"C:\Program Files\Python31\python.exe" "D:\svn-repos\myrepo\hooks\myscript.py"

Tags: import终端outputchecksvnrepossubprocesssubversion
2条回答

最后我使用了一个不同的SVN绑定SVN python,这很管用。我只能猜测subversion和PySVN版本的Windows二进制文件之间存在一些不匹配。在

我认为您不需要使用子流程(仅用于此),您可以使用:

import os

stdout = os.popen('svnlook youngest D:/svn-repos/myrepo')

print stdout.read()

Occam's razor:)

因为我从这里看到.bat文件是旧的东西,而且子进程处理大量的重定向、处理,我认为这不起作用,但也许我错了,也许我只是想给你找个借口,但是。。。在

顺便说一下,在python脚本中,你做了一个print,你的@ECHO OFF在你的.bat中,所以我认为它不起作用也许你可以用这样的方式包装命令:

^{pr2}$

祝你好运:)

相关问题 更多 >