我正在敲响一个应用程序来尝试帮助我的构建过程并尝试包含git pull origin
命令。我已尝试并测试了各种方法,但似乎无法获得任何输入或输出来使用该命令。
程序在没有输入或输出的情况下等待Process.waitFor()
。
我假设git pull
命令正在等待我输入用户名和密码,但到目前为止,我还未能确定如何实现这一目标。
关于SO覆盖这些例子有很多问题,但没有一个答案似乎适用于我的用例。
我认为最简单的代码应该是:
class CmdTest {
public static void main(String[] args) throws Exception {
ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "git pull origin");
pb.redirectErrorStream(true);
pb.redirectInput(ProcessBuilder.Redirect.INHERIT);
pb.redirectOutput(ProcessBuilder.Redirect.INHERIT);
Process process = pb.start();
process.waitFor();
}
}
用git pull origin
替换dir
将按预期提供输出。
答案 0 :(得分:0)
在没有默认配置凭据的情况下执行git pull origin
,git
将在任何重要操作时等待它们。在您的代码中,您没有提供(不看)git
反馈,因此应用程序在此阶段陷入困境。
将git
的默认凭据配置到.gitconfig
文件中,任何git
命令都将使用它们,控制台不会被卡住(不是您的应用程序)。