我在Windows XP上安裝了Python 3.1,Subversion 1.6.12和PySVN。通過Python訪問時出現SVN錯誤
如果我打開一個Python終端,做
import subprocess
print subprocess.check_output(['svnlook','youngest','D:/svn-repos/myrepo'])
我得到預期的版本號。
但是,如果我加入這Subversion的-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最年輕」的等效呼叫。
編輯:我打電話從-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 2010-11-16 22:52:41
謝謝。請參閱我上面的編輯。 – Cerin 2010-11-16 23:04:45