如何在执行“git fetch -v --progress”时输入密码 “来自java中的ProcessBuilder

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在执行“git fetch -v --progress”时输入密码 “来自java中的ProcessBuilder相关的知识,希望对你有一定的参考价值。

该程序不允许输入密码,它在读取通过扫描仪输出的命令时基本挂起。基本上我试图从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:
epproject");
    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();
答案

但控制台挂在C: epproject>git fetch -v --progress abc@xyz.com/a/b releaseBranch

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

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

关键是:最好让Git自己寻找密码/密码(在ssh-agent或凭证助手中),而不是试图通过程序控制台提供相同的敏感日期。

以上是关于如何在执行“git fetch -v --progress”时输入密码 “来自java中的ProcessBuilder的主要内容,如果未能解决你的问题,请参考以下文章

APP如何在电脑上执行?

给定代码的执行流程将如何?以及例程将如何在这里执行?

如何在KEIL上查看程序执行的步骤?

如何在命令行执行 powershell 脚本

SQL SERVER如何应用执行计划

如何在命令行执行 powershell 脚本