Я пытаюсь написать простое приложение на java, которое автоматически клонирует весь ствол от TFS до Git репо, используя git -tfs. Чтобы получить данные от пользователя, я использую некоторые jtextfields. В одном из jtextfields пользователь должен написать имя соединительной линии. Все работает, но, если имя транка содержит пробелы, весь процесс git -tfs не запускается, а в журналах git tfs говорится о соблюдении synopsys.
Для запуска git -tfs, synopsys:
$ git-tfs.exe --username <username> --password <password> <server-url> <trunk-name> <working-folder-path>
es .:
$ git-tfs.exe --username=myusernamename --password=mypassword http://127.0.0.1:8080/DefaultCollection $/TrunkName C:\workingFolder
Вот мой код:
commands = new ArrayList<String>();
commands.add("C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe");
commands.add("/c");
commands.add("git-tfs.exe");
commands.add("--username=" + usernameTextField.getText());
commands.add("--password=" + passwordTextField.getText());
commands.add(serverUrlTextField.getText());
commands.add(trunkTextField.getText());
commands.add(workingFolder.getText());
ProcessBuilder pb = new ProcessBuilder(this.commands);
Process process = pb.start();
В поисках net я нашел решение для git -tfs и записать имя соединительной линии в квоты, такие как $ / "имя ствола / некоторые / путь". Запуск git -tfs с квотами из powershell, все работает нормально, но писать то же самое в приложении jtextfield не может, снова говоря о синопсисе.
Чтобы протестировать сборщик процессов, я попытался изменить ArrayList с помощью команд, добавив вручную измененная строка, чтобы она выглядела:
...
this.commands.add("$/\"trunk name\"");
...
даже не так, как это работает, поэтому я попытался:
...
this.commands.add("$/\\\"trunk name\\\"");
..
, и это работает.
После этого я пытался напишите то же самое на jtextfield, но это не может работать. Как я могу исправить проблему и разобрать текст из jTextField и позволить процессу processBuilder работать?
Спасибо!