Создание нового локального репозитория с помощью JGit завершается ошибкой, поскольку в Bare Repository нет рабочего дерева.

Я пытаюсь использовать JGit для создания локального не голого репозитория. Я создаю каталог, затем создаю объект Repository для этого каталога, затем использую repository.create(). Мое исследование здесь показывает, что это должно создать локальный не голый репозиторий. Однако строка repository.create() выдает исключение

org.eclipse.jgit.errors.NoWorkTreeException: Bare Repository has neither a working tree, nor an index. 

Это было бы сообщение, которое я ожидал бы, если бы я создал пустой репозиторий или сослался на него, а затем попытался добавить в него файлы. Однако эта ошибка появляется в строке, которая создает репозиторий, и я очень четко делаю не голый репозиторий. Документация метода создания: «Создайте новый репозиторий Git. С помощью этого метода создается репозиторий с рабочим деревом».

Я убедился, что каталог успешно создан.

Что здесь происходит?

File repositoryPath = "test.git";
Repository repository = new FileRepository(repositoryPath);
repository.create(false); // This line throws the error

person Don Subert    schedule 21.03.2015    source источник


Ответы (1)


Похоже, что документация и FileRepository (тем временем?) относятся к внутреннему пакету и доступ к ним не рекомендуется.

Вы можете использовать InitCommand для создания таких репозиториев

Git.init().setDirectory( directory ).call()

По умолчанию это создает не голый репозиторий, где directory — это рабочий каталог, а directory/.git содержит базу данных объектов Git.

Для полноты: если вы вызываете InitCommand с setBare( true ), будет создан голый репозиторий с базой данных объектов, расположенной в directory.

person Rüdiger Herrmann    schedule 21.03.2015
comment
Это была удивительная находка. Это точно. Похоже, что учебники и документация, которые я читал, предшествовали их новому, более интуитивно понятному интерфейсу. Кроме того, спасибо, что показали мне, как улучшить форматирование моего вопроса. принято +1 - person Don Subert; 21.03.2015