【发布时间】:2015-07-16 15:59:41
【问题描述】:
我正在尝试使用 LibGit2Sharp 初始化并将初始提交推送到 GitLab 存储库。
if (!Directory.Exists("D:\\GitRepos\\" + repositoryName))
{
Directory.CreateDirectory("D:\\GitRepos\\" + repositoryName);
File.Create("D:\\GitRepos\\" + repositoryName + "\\README.md").Close();
}
Repository.Init("D:\\GitRepos\\" + repositoryName);
using (var repo = new Repository("D:\\GitRepos\\" + repositoryName))
{
repo.Index.Add("README.md");
Signature author = new Signature("user", "user@user.com", DateTime.Now);
Signature committer = author;
repo.Commit("Initial Commit", author, committer);
repo.Network.Remotes.Add("origin", validRepoHttpsUrl);
Remote remote = repo.Network.Remotes["origin"];
var options = new PushOptions
{
CredentialsProvider = (_url, _user, _cred) =>
new UsernamePasswordCredentials {Username = "validuser", Password = "validpassword"}
};
string pushRefSpec = @"refs/heads/master";
repo.Network.Push(remote, pushRefSpec, options);
}
}
存储库是在本地创建和初始化的,没有问题。 README 文件被创建并添加到 repo 索引并且提交成功。当我尝试将提交推送到远程端点时,我收到一条错误消息:
"Request failed with status code: 411"
如果我在推送之前放置一个断点并使用以下命令为 repo 设置 http.postBuffer:
git config http.postBuffer 524288000
推送执行时我收到一个新错误:
Failed to write chunk footer: The connection with the server was terminated abnormally
我能够快速建立一个bitbucket git repo并毫无问题地推送它,似乎这可能是gitlab的问题。
【问题讨论】:
-
411 是“需要长度”。 GitLab 不支持分块编码吗?您确定 URL 是正确的吗?如果您克隆存储库,您可以推送吗?而不是尝试推送到全新的存储库?
-
(我不太确定如何回答第一个问题。Paging GitLab CEO...)
-
我们自托管 gitlab 并且工作正常,但我刚刚尝试了 git:gitlab.com 和 gitlab.com 都失败了。发现这个与 http 错误 411 相关的未解决问题:使用凭据 #905 通过 HTTPS 将更改推送到 GitLab 存储库:github.com/libgit2/libgit2sharp/issues/905
-
不确定你的网络/服务器/nginx配置,但我会wireshark libgit2 vs git。还要查看您的 nginx 日志以了解来自 libgit2 连接的错误。
-
我唯一要添加的另一件事是,我假设您正在运行更新的 ngnix,而不是出现 chunkin 模块问题(1.3.? google it)。在这些版本中有 .conf 更改来解决这个问题,但我会更新到 1.9.x 版本是可能的
标签: c# git gitlab libgit2sharp