从Windows中的python脚本调用和控制git bash

时间:2015-01-20 12:40:54

标签: python windows git pexpect

如果可能的话,请就我面临的问题提供帮助。 (做了大量的搜索,许多建议看起来很有希望,但还没有达到我想要的地方。)

我在Windows(7 -64位)工作,并想设计一个python脚本,它将自动从git中拉出(后来执行其他操作)。 问题是,我们公司的git存储库是这样设计的,当打开git-bash时,我们会使用特殊的“协助”方式。函数(git_help_fn),允许在repos之间切换,拉动它们并自动合并它们。这意味着我无法使用内置的python git命令。 我手动做的是:

git_help_fn -r1 % in order to move to r1 repo
git pull
git_help_fn -r2 % in order to move to r2 repo
git pull

所以,我正在寻找的是一种从python调用git-bash并与之交互的方法,提供预定义的命令(如上面的命令),并且至少在开头是硬编码的密码(只是为了看看)它有效。)

在使用python子进程和stdin / stdout写入/读取尝试进行大量搜索和测试之后,我得出结论,winexpect就是我需要的模块。

但是,我离开的最远的地方是:

child = winspawn(os.system('start "" "C:\\Program Files (x86)\\Git\\bin\\sh.exe" --login'))

这样,git bash打开,我可以手动输入,但不能通过python传递任何命令。 Python返回错误:

File "C:\Python27\lib\site-packages\winpexpect-1.5-py2.7.egg\winpexpect.py", line 346, in __init__
logfile=logfile, cwd=cwd, env=env)
File "C:\Python27\lib\site-packages\winpexpect-1.5-py2.7.egg\pexpect.py", line 429, in __init__
self._spawn (command, args)
File "C:\Python27\lib\site-packages\winpexpect-1.5-py2.7.egg\winpexpect.py", line 362, in _spawn
args = split_command_line(command)
File "C:\Python27\lib\site-packages\winpexpect-1.5-py2.7.egg\winpexpect.py", line 78, in split_command_line
for c in itertools.chain(cmdline, ['EOI']):  # Mark End of Input
TypeError: 'int' object is not iterable

我想,我想要做的并不是过于复杂。但是,我不是一个经验丰富的程序员,已经走到了尽头。任何援助都将非常感激。 提前致谢, 萨诺斯

0 个答案:

没有答案