libgit2 / libgit2/libgit2sharp
Exception while trying to retrieve last commit from shallow repo
未关闭
还没有人认领这个 Issue。
- 主要语言
- C#
- 星标
- 3.5k
- 派生
- 925
- PR 合并指标
- 30 天内没有已合并 PR
描述
In my custom MSBuild task code tries to get last commit hash to put it into one of assembly attributes. Task works very well with repositories cloned with full depth but fails with the following error in repositories with limited depth created with command git clone --depth xx - where xx is number of last commits to clone.
/home/travis/build/DjvuNet/DjvuNet/DjvuNetBuild.Core.targets(20,5): error :
LibGit2Sharp.NotFoundException:
object not found - no match for id (d53e5a7166904479d42953bd0f91264f5ace1f6d)
[/home/travis/build/DjvuNet/DjvuNet/DjvuNet.NETStandard2.0/DjvuNet.NETStandard2.0.csproj]
Code used to retrieve commit data is as follows:
Repository repo = new Repository(RepoRoot);
var commits = repo.Commits;
var commit = commits.FirstOrDefault();
Seems to be libgit2sharp implementation bug as git fully supports enumeration of limited depth repos.
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
从报告中显示的 Repository.Commits 入口点开始,使用通过 git clone --depth xx 创建的仓库重现该故障。将浅层仓库的枚举结果与报告的 NotFoundException 进行比较,然后验证获取第一个 commit 时不会出现缺少对象错误并且能够成功完成。Issue 中未指定具体的测试文件。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- csharp, git
- 领域
- devtools
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100