我正在将 Git 支持添加到用 Python(使用 PyQt)编写的现有应用程序中。我决定通过subprocess.Popen
和解析不同命令的结果直接与 Git 命令交互(因为对于我们想要实现的几件事,导入一个完整的第三方库似乎并不合适)。
到目前为止,我已经成功地合并了git branch
and git remote
,这或多或少是有效的,因为我仍然在我的本地仓库中。
现在我正在解决git fetch
并遇到困难。
首先,我从标准错误上的 gnome-keyring 得到一个“警告”。这是由于我的安装有问题,但我们当然不应该因为这样的事情而挂断电话。所以我只是忽略了这个警告。可能这很老套,但现在我认为如果应该报告问题,我们可以忍受添加这样的变通方法。
但是后来我遇到了 shell 要求我(再次在 stderr 上)输入我的 SSH 密码的问题。这也是我在特定计算机上安装的问题,但如果用户更喜欢亲自输入密码,我们应该接受。所以我必须处理这种情况。
因此,在冗长的介绍之后,问题相当简洁:
如果我git fetch
通过 Python运行一个 shell 命令,subprocess.Popen
并且这个 shell 程序要求用户反馈,我如何从 Python 与它进行交互?
基本上我想向用户显示标准错误输出并允许他输入密码。(然后当然实现一个选项来将此密码存储在应用程序中。)