libgit2 / libgit2/libgit2sharp
Update bundled libgit2 to >= 1.9.4 for relativeWorktrees support
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- C#
- Star
- 3.5k
- Fork
- 925
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
Reproduction steps
Use LibGit2Sharp to open a repository/worktree created by Git with relative worktree paths enabled. Modern Git can set this automatically when a worktree is created or repaired with relative paths.
A minimal repository state has core.repositoryformatversion = 1 and the newer Git extension:
[extensions]
relativeWorktrees = true
A linked worktree may have a .git file like:
gitdir: ../worktrees/my-worktree
Then open the worktree with LibGit2Sharp:
using LibGit2Sharp;
using var repo = new Repository("/path/to/my-worktree");
This also reproduces through downstream tools that depend on LibGit2Sharp. In my case, GitVersion.MsBuild 6.7.0 launches its bundled GitVersion tool, which bundles LibGit2Sharp 0.31.0 and native libgit2 1.8.4, and fails while opening the repository.
Expected behavior
LibGit2Sharp should open repositories/worktrees that use Git's extensions.relativeWorktrees extension.
The upstream libgit2 issue was fixed here:
The fix is included in libgit2 v1.9.4:
Actual behavior
Opening the repository fails before any repository operations can run:
LibGit2Sharp.LibGit2SharpException: unsupported extension name extensions.relativeworktrees
at LibGit2Sharp.Core.Ensure.HandleError(Int32 result)
at LibGit2Sharp.Core.Ensure.ZeroResult(Int32 result)
at LibGit2Sharp.Core.Proxy.git_repository_open(String path)
at LibGit2Sharp.Repository..ctor(String path, RepositoryOptions options, RepositoryRequiredParameter requiredParameter)
at LibGit2Sharp.Repository..ctor(String path)
Version of LibGit2Sharp (release number or SHA1)
Observed via downstream GitVersion.MsBuild 6.7.0, which bundles:
LibGit2Sharp 0.31.0
native libgit2 1.8.4
The requested dependency update is for a LibGit2Sharp release that bundles native libgit2 >= 1.9.4.
Operating system(s) tested; .NET runtime tested
Tested on Linux / WSL2 with .NET 8.0.
Git version in the environment:
git version 2.51.2
Downstream dependency-chain impact
This blocks tools that consume LibGit2Sharp indirectly, notably GitVersion. I am filing a corresponding GitVersion issue as well, because GitVersion cannot fix this until LibGit2Sharp publishes a release with libgit2 >= 1.9.4.
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu với điểm vào của hàm khởi tạo Repository và cấu hình libgit2 gốc được đóng gói cùng dự án. Tái hiện lỗi bằng một worktree có bật extensions.relativeWorktrees, sau đó xác minh rằng phiên bản libgit2 được đóng gói ít nhất là 1.9.4 và việc mở repository thành công trên Linux/.NET 8.0.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- csharp, git
- Lĩnh vực
- build-system
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 48/100