python - Python访问SVN报错

标签 python windows svn

我在 Windows XP 上安装了 Python 3.1、Subversion 1.6.12 和 PySVN。

如果我打开 Python 终端并执行

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

我得到了预期的修订号。

但是,如果我将其添加到 Subversion 的 post-commit.bat 中,它会失败并显示错误“句柄无效”:

  File "C:\Program Files\Python31\lib\subprocess.py", line 472, in check_output
    process = Popen(*popenargs, stdout=PIPE, **kwargs)
  File "C:\Program Files\Python31\lib\subprocess.py", line 651, in __init__
    errread, errwrite) = self._get_handles(stdin, stdout, stderr)
  File "C:\Program Files\Python31\lib\subprocess.py", line 750, in _get_handles
    p2cread = GetStdHandle(STD_INPUT_HANDLE)
WindowsError: [Error 6] The handle is invalid

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

假设没有直接解决此问题的方法,我将如何解决此问题?我需要某种方法从 SVN 存储库检索最新的修订号,而无需本地工作副本。我已经挖掘了 PySVN 的 Programmer's Reference ,但我找不到对“svnlook youngest”的等效调用。

编辑:我从 post-commit.bat 调用脚本,如下所示:

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

最佳答案

我最终使用了不同的 SVN 绑定(bind) svn-python,并且成功了。我只能猜测 Subversion 和 PySVN 版本的 Windows 二进制文件之间存在一些不匹配。

关于python - Python访问SVN报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4199501/

相关文章:

python - Numpy:比较两个数据集的适应性

python - 在 VS Code 中为 Azure Functions 创建新的 Python 函数,卡在 "Creating virtual environment..."上

windows - 从性能的角度来看,虚拟地址空间映射如何才能被接受?

windows - 在登录时运行具有提升权限的桌面应用程序

svn - 为什么要使用版本控制?

SVN 提交后 - 对 .svn/lock 的权限被拒绝

Python quantlib 示例?

c# - 使用 C# 将 Shell 集成到 Windows 中以获取特定文件类型

svn - 使用tortoise svn防止提交并忽略本地更改

python - 计算日期列表中每月错误 bool 值的数量?