提交更改时,LibGit2Sharp会抛出异常

时间:2014-04-23 05:28:20

标签: git libgit2sharp

我创建了一个应用程序,它将文件签入Git以测量其性能。它可以在我的机器上找到。

private void Commit()
{
    using (var repo = new Repository(GIT_PATH))
    {               
        repo.Index.Stage(GIT_PATH);

        var commitMessage = string.Format(CultureInfo.InvariantCulture, Resources.GitCommittingMessage, DateTime.Now);
        var author = new Signature(this.credentials.Username, "", DateTime.Now);
        repo.Commit(commitMessage, author);
    }
}

在其他计算机上运行时抛出错误。异常消息是:

Can not find Name or Email setting of the current user in Git configuration.

收到消息后,我检查了是否设置了git config --global user.name。我通过运行git config --global user.name进行了检查,并打印出用户名。

我在这里做错了什么?如何解决?

更新 下面是工作代码,只是添加了提交者并使用像the accepted answer这样的重载方法。

var commitMessage = string.Format(CultureInfo.InvariantCulture, Resources.GitCommittingMessage, DateTime.Now);
var author = new Signature(this.credentials.Username, "", DateTime.Now);
var committer = new Signature(this.credentials.Username, "", DateTime.Now);
repo.Commit(commitMessage, author, committer);

1 个答案:

答案 0 :(得分:2)

您正在使用的 overload 将从git全局配置环境为Committer构建Signature。错误消息很有可能来自此代码路径,并且@ msound的评论很有用!

这在函数

的xml文档中有描述

/// <para> /// The Committer will be guessed from the Git configuration. /// An exception will be raised if no configuration is reachable. /// </para>

另一个 overload 接受作者和提交者签名作为参数,以便更好地控制所提供的身份。