У меня есть Python 3.1, Subversion 1.6.12 и PySVN, установленные в Windows XP.Ошибка SVN при доступе через Python
Если открыть терминал Python и сделать
import subprocess
print subprocess.check_output(['svnlook','youngest','D:/svn-repos/myrepo'])
я получить ожидаемый номер версии.
Однако, если добавить этот пост-commit.bat Subversion, он терпит неудачу с ошибкой «недопустимый дескриптор»:
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».
Edit: Я звоню скрипт с пост-commit.bat как:
@ECHO OFF
"C:\Program Files\Python31\python.exe" "D:\svn-repos\myrepo\hooks\myscript.py"
, как вы запускаете это из post-commit.bat, покажите нам post-commit.bat ???, потому что ошибка, которую вы показываете __STD_INPUT_HANDLE__, является стандартным вводом, который не может быть найден, поэтому я предполагаю, что .bat файл ограничен в этом вопросе – mouad
Спасибо. См. Мое редактирование выше. – Cerin