На 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.
Чтобы создать новый репозиторий, лучше положиться на git_repository_init()
, Для получения дополнительной информации вы можете посмотреть на заголовок и тесты.
git_repository_open()
лучше использовать, когда хранилище уже существует.
Есть ли специальный форум, где я должен задать этот вопрос?
Можно задавать вопросы, связанные с программированием, в StackOverflow. Кроме того, некоторые разработчики libgit2 тусуются в канале # libgit2 на irc.freenode.net. Однако, когда вы сталкиваетесь с ошибками, рекомендуется отправить их на трекер.
Учитывая то, что вы обнаружили при отладке libgit2, возможно, сейчас самое время открыть ошибку в трекере. Помните, что в игре могут быть две проблемы: пробная и пустая конфигурация.
Других решений пока нет …