JGit CheckoutCommand не работает

Я клонирую удаленный репозиторий и хочу проверить несколько веток для взаимодействия с ними (без внесения изменений в рабочий каталог).

Итак, я клонирую репозиторий:

CloneCommand clone = Git.cloneRepository();
clone.setURI(project.getUrl());
clone.setDirectory(new File(RepositoryHandlerHelper
        .getFilePath(project)));
clone.setCredentialsProvider(getCredentials());
clone.setCloneAllBranches(true);

clone.call();

И это работает. Теперь я создаю удаленные ветки на своем локальном жестком диске (в цикле):

git.branchCreate().setName(currentBranchToBuild)
.setUpstreamMode(SetupUpstreamMode.TRACK)
.call();

Что также работает. Я не уверен, что это необходимо. После этого я пытаюсь проверить каждую ветку:

git.checkout().setName(currentBranchToBuild).call();

Я уверен, что имя правой ветки отправлено на setName(). Исключение не выдается, но команда, похоже, не влияет на мой рабочий каталог.

Я что-то упустил здесь?


person dwalldorf    schedule 26.10.2012    source источник
comment
Последние два блока кода имеют точно такой же код, я предполагаю, что последний должен быть git.checkout()?   -  person robinst    schedule 26.10.2012


Ответы (2)


Я думаю, вам нужно добавить setStartPoint("origin/branchtotrack"), также см. мой ответ на аналогичный вопрос.

person robinst    schedule 26.10.2012
comment
Я попробовал это: git.checkout().setStartPoint("origin/" + currentBranchToBuild).setName(currentBranchToBuild).call(); Но это ничего не изменило. Это то, что вы имели в виду? - person dwalldorf; 26.10.2012

Нашел рабочее решение: мне не нужно создавать локальную копию каждой ветки. Если я просто проверяю удаленную ветку, она работает. Моя проблема заключалась в другом. Я создаю JavaDoc каждой ветки (оформить заказ, а затем создать JavaDoc). Но вроде проверка не вступает в силу сразу. Если я помещу Thread.sleep(1000) между git.checkout... и моим вызовом для создания JavaDoc, он будет работать нормально.

Спасибо за помощь.

person dwalldorf    schedule 26.10.2012