Как инициализировать репозиторий git с помощью libgit2

На 32-битной машине с Windows XP я клонировал репозиторий libgit2, используя

git clone git://github.com/libgit2/libgit2.git trunk

Затем я настроил из trunk_build_debug для mingw, используя:

cmake ../trunk -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS=-g

и построил это с

make

С помощью этой новой библиотеки я пытаюсь создать новый репозиторий. Так что я использую

    error_code = git_repository_init( &repo, path, 0 );
if ( error_code != 0 )
{
const git_error * error = giterr_last();
/* the text representation:
( error == NULL || error->message == NULL ?
"(no description)" :
error->message )
*/
}

При первой попытке это завершается с сообщением об ошибке:

Ошибка Git -1: Глобальный файл ‘.config / git / config’ не существует:
система не может найти указанный файл.

Каталог .git создан, и я могу использовать git status запросить это. Кроме того, я установил git в Program Files / git, и он работает просто отлично. Упомянутый файл не существует в пользовательском каталоге, это правда. Я не счастлив, потому что не могу проверить возвращенный код ошибки (ошибка может быть «реальной»).

Поэтому я создал пустой файл в D: \ Documents and Settings \ User Name.config \ git \ config
Каталог .git снова создан, но я получаю тот же код ошибки -1. На этот раз giterr_last () возвращает NULL.

Отслеживание кода в отладчике, похоже, указывает на то, что библиотека недовольна моим пустым файлом.

Тем не менее, я думаю, что это означает, что я делаю что-то не так. Есть ли метод инициализации? Нужно ли создавать файл и использовать функции git_config_, чтобы указать на него библиотеку?

Кстати, это неправильное место, чтобы спросить это? Есть ли специальный форум, где я должен задать этот вопрос?

Спасибо


Вот обратная трассировка, где вызов не удался: Pastebin
Похоже, что файл конфигурации внутри каталога .git не может быть проанализирован (в трассировке не отображается «config_parse ()», который завершается ошибкой).


Я открыла проблема в libgit2.

1

Решение

Чтобы создать новый репозиторий, лучше положиться на git_repository_init(), Для получения дополнительной информации вы можете посмотреть на заголовок и тесты.

git_repository_open() лучше использовать, когда хранилище уже существует.

Есть ли специальный форум, где я должен задать этот вопрос?

Можно задавать вопросы, связанные с программированием, в StackOverflow. Кроме того, некоторые разработчики libgit2 тусуются в канале # libgit2 на irc.freenode.net. Однако, когда вы сталкиваетесь с ошибками, рекомендуется отправить их на трекер.

Обновить

  • В прошлом были некоторые проблемы с проверкой файлов конфигурации в Windows. Вместе с некоторыми попытками их исправить. Видеть это вопрос для некоторого фона об этом.
  • Помимо сложности проверки, некоторые пользователи могут явно указать альтернативные места для своих файлов. это тянуть запрос работает этот угол.

Учитывая то, что вы обнаружили при отладке libgit2, возможно, сейчас самое время открыть ошибку в трекере. Помните, что в игре могут быть две проблемы: пробная и пустая конфигурация.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]