При выполнении следующей команды, я предложено ввести пароль:Почему команда «git pull» exec застревает и ничего не печатает?
$ git pull
Enter passphrase for key (...)
Когда я пытаюсь показать ту же информацию, используя Apache программно Commons Exec, программа застревает и ничего не печатает:
CommandLine cmd = new CommandLine("git");
cmd.addArgument("pull");
DefaultExecutor executor = new DefaultExecutor();
executor.setStreamHandler(new PumpStreamHandler(System.out, System.err, System.in));
executor.execute(cmd);
Почему этот пример застрял без печати, и при использовании родной консоли он предлагает мне предоставить пароль git?
Любая идея о том, как я могу решить все проблемы, связанные с обработкой git в java, без необходимости понимать такие вещи низкого уровня? Возможно, библиотека? –
После вашего редактирования: JGit - это именно то, что я использую прямо сейчас: D, спасибо! –
Хорошо :) Помните, что jgit использует [jsch] (http://www.jcraft.com/jsch/) для выполнения всех связанных с ssh операций, таких как 'git push' и' git fetch'. Это, в свою очередь, требует [JSch Agent proxy] (http://www.jcraft.com/jsch-agent-proxy/) использовать авторизационные агенты, такие как 'ssh-agent' или' pageant' для обработки аутентификации ключа SSH (хорошая функция так как это позволяет избежать необходимости вводить кодовую фразу каждый раз, когда вам нужно взаимодействовать с удаленным репозиторием) – user3159253