2013-12-03 2 views
2

Команда CloneRepository, кажется, игнорирует параметр setBranch, если вы не выполняете проверку. Есть ли способ указать ветку (вместо мастера)? Я не хочу проверять всю ветку, но хочу добавить файл в эту ветку (добавить, зафиксировать и нажать)jgit - клонировать ветвь репо без выписки

ответ

1

Это работает для меня, когда я использую existing snippet for cloning из jgit-cookbook и добавляю только следующее: строка 33:

  .setBranch("email") 

После того, как фрагмент кода выполняется, местный клон во временном каталоге имеет данную отрасль проверила.

Другим вариантом может быть использование org.eclipse.jgit.storage.dfs.InMemoryRepository для клонирования Git repo in-memory и работы оттуда.

+0

У вас есть .setNoCheckout (true)? Когда он установлен в false, вы правы. Но когда установлено значение true, локальный каталог не отслеживается в указанной ветке - вместо этого он отслеживает мастер. Статус git подтверждает текущее отслеживание. – user2242849

+0

Хм, я не уверен, что если это возможно, как только вы захотите добавить что-то в ветку, вам нужно иметь чек, насколько я знаю. Или вы можете сделать это с помощью командной строки git? – centic

+0

Я смотрел тест https://github.com/eclipse/jgit/blob/master/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PushCommandTest.java#L107-L154. Он использует объекты RefUpdate для «дураков» git, думая, что фиксация проверена. Я не понимаю, как работает этот тест, но надеялся, что ключ к тому, чтобы заставить git думать, что рабочий репозиторий находится в определенном состоянии. Мне не удалось заставить командную строку делать то, что я хочу - мне всегда нужно делать CO. – user2242849

Смежные вопросы