如何使用libgit2初始化git存储库

时间:2013-03-06 12:48:03

标签: c++ windows libgit2

在Windows XP,32位机器上,我使用

克隆了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 error -1:全局文件'.config / git / config'不存在:   系统找不到指定的文件。

创建了.git目录,我可以使用git status来查询它。另外,我在Program Files / git中安装了git,它运行得很好。用户目录中不存在提到的文件,即为true。我不高兴,因为我无法检查返回的错误代码(错误可能是“真实的”)。

所以我在D:\ Documents and Settings \ User Name.config \ git \ config中创建了一个空文件 再次创建.git目录,但我得到相同的-1错误代码。这次giterr_last()返回NULL。

在调试器中跟踪代码似乎表明该库对我的空文件不满意。

然而,我认为这表明我做错了什么。有初始化方法吗?我是否需要创建文件并使用git_config_函数将库指向它?

顺便说一下,这是错误的地方吗?是否有专门的论坛,我应该问这个问题?

由于


以下是呼叫失败的后跟踪:pastebin 似乎无法解析.git目录中的配置文件(未在跟踪中显示的是'config_parse()'失败)。


我在libgit2中打开了an issue

1 个答案:

答案 0 :(得分:3)

要创建新的存储库,应该依赖git_repository_init()。有关详细信息,您可以查看 header tests

当存储库已经存在时,应该使用

git_repository_open()

  

是否有专门的论坛,我应该问这个问题?

可以在StackOverflow上询问与编程相关的问题。除此之外,一些libgit2开发人员在irc.freenode.net的#libgit2频道中闲逛。但是,当您遇到错误时,建议将其提交到 issue tracker

更新

  • 过去在Windows上检测配置文件的方式存在一些问题。以及一些尝试修复它们。有关此问题的背景信息,请参阅此 issue
  • 除了探测的复杂性之外,一些用户可能希望明确地为其文件提供备用位置。 pull request 就是这个角度。

考虑到在调试libgit2时发现了什么,现在可能是在问题跟踪器中打开错误的好时机。请注意可能有两个问题:探测问题和空配置问题。