"时输入密码-6ren"> "时输入密码-该程序不允许输入密码,它在通过扫描仪读取命令输出时基本上挂起。基本上我正在尝试从 git 存储库获取分支。 ProcessBuilder builder = new ProcessBuilde-6ren">
gpt4 book ai didi

java - 如何在java中从ProcessBuilder执行 "git fetch -v --progress "时输入密码

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:53 25 4
gpt4 key购买 nike

该程序不允许输入密码,它在通过扫描仪读取命令输出时基本上挂起。基本上我正在尝试从 git 存储库获取分支。

    ProcessBuilder builder = new ProcessBuilder( "cmd" );
builder.redirectErrorStream(true);
Process process = null;
try {
process = builder.start();
} catch (IOException e) {
e.printStackTrace();
}

//get stdin of cmd
BufferedWriter p_stdin = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));

// execute the desired command from list
List<String> cmdList = new ArrayList<String>();
String baseURL= "abc@xyz.com/a/b";
cmdList.add("cd c:\rep\project");
cmdList.add(String.format("git fetch -v --progress %s releaseBranch", baseURL));
cmdList.add("exit");

for (String cmd : cmdList) {
try {
//single execution
p_stdin.write(cmd);
p_stdin.newLine();
p_stdin.flush();

if(cmd.startsWith("git fetch")) {
//process.waitFor();
//p_stdin.wait();
p_stdin.write("XXXXX@xxx");
p_stdin.newLine();
p_stdin.flush();
}

} catch (IOException e) {
System.out.println(e);
}
}
Scanner scanner = new Scanner(process.getInputStream());
while ( scanner.hasNextLine()) {
System.out.println(scanner.nextLine()); //Process hangs at this point
}
process.getInputStream().close();
scanner.close();

最佳答案

but console hangs at C:\rep\project>git fetch -v --progress abc@xyz.com/a/b releaseBranch point

abc@xyz.com 看起来像一个 SSH URL,这意味着您需要一个私钥:

如果您使用的是 HTTPS URL,则可以考虑缓存密码(这次是密码,而不是密码短语),如果 account in credential helper .

Gist 是:最好让 Git 本身查找密码/密码(在 ssh 代理或凭证助手中),而不是尝试通过程序控制台提供相同的敏感日期。

关于java - 如何在java中从ProcessBuilder执行 "git fetch -v --progress <baseURL> <releaseBranch>"时输入密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48746245/

25 4 0