Please consider adding AOT support for .Diff.Compare<T>()
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Bắt đầu với dự án console .NET 8 và thiết lập aot-test.csproj/Program.cs của dự án, sau đó tái hiện lỗi bằng dotnet publish và repo.Diff.Compare(commit1.Tree, commit2.Tree). Hoàn thành khi tệp thực thi AOT native hoàn tất lệnh gọi diff và báo cáo một thay đổi diff thay vì ném NullReferenceException.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
When utilizing libgit2sharp in combination with the .NET 8 PublishAot feature, all repository creation, file staging and committing operations are successful, however, the git diff function throws a NullReferenceException.
Is there a way to get this working under AOT?
Steps To Reproduce:
- Create a .NET 8 console project
dotnet new console -o aot-test cd aot-test - Adjust aot-test.csproj to include libgit2sharp reference and activate PublishAot feature
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <RootNamespace>aot_test</RootNamespace> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <PublishAot>true</PublishAot> </PropertyGroup> <ItemGroup> <PackageReference Include="libgit2sharp" Version="0.29.0" /> </ItemGroup> </Project> - Insert the following code into Progmram.cs:
using LibGit2Sharp;
var path = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
Directory.CreateDirectory(path);
Repository.Init(path, false);
var userName = "Tester";
var email = "tester@mail.net";
Func<Signature> getSignature = () => new Signature(userName, email, DateTimeOffset.Now);
using (var repo = new Repository(path))
{
var fileName = "test.txt";
var filePath = Path.Combine(path, fileName);
File.WriteAllText(filePath, "Hello, World!");
Commands.Stage(repo, fileName);
var commit1 = repo.Commit("Initial commit", getSignature(), getSignature());
File.AppendAllText(filePath, "\nAppended Line");
Commands.Stage(repo, fileName);
var commit2 = repo.Commit("Second commit", getSignature(), getSignature());
Console.WriteLine($"Commits Count {repo.Commits.Count()}");
var changes = repo.Diff.Compare<Patch>(commit1.Tree, commit2.Tree);
Console.WriteLine($"Diff Changes Count = {changes.Count()}");
}
- Use
dotnet runfor testing, it will display:
Commits Count 2
Diff Changes Count = 1
- Use
dotnet publish,.\bin\Release\net8.0\win-x64\publish\aot-test.exeto test the native AOT version, it throws an exception onrepo.Diff.Compare<Patch>():
Commits Count 2
Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
at aot-test!<BaseAddress>+0x19af4c
at aot-test!<BaseAddress>+0x199437
Current Behavior:
The native AOT functions for repository creation, file staging, and committing operations are functional, but the git diff function is not.
Anticipated Behavior:
Please consider adding AOT support for the git diff API.
Version of LibGit2Sharp (release number or SHA1)
0.29.0
Operating system(s) tested; .NET runtime tested
- OS: Windows 11
- .NET: 8.0.100
- 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
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.
Issue khác của libgit2/libgit2sharp
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 52/100
libgit2/libgit2sharp#2193 · 2 bình luận ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 38/100
libgit2/libgit2sharp#2192 · 1 bình luận ·
-
Website is down Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 20/100
libgit2/libgit2sharp#2191 · 2 reaction ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
libgit2/libgit2sharp#2189 · 1 reaction ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
libgit2/libgit2sharp#2187 · 2 bình luận ·
Tất cả issue của libgit2/libgit2sharp
Issue tương tự
-
bug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 75/100
sillsdev/languageforge-lexbox#2665 ·
-
bug documentation frontend
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
azurenoops/spin_agent#975 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
-
:watch: Not Triaged 11.0 fundamentals/subsvc
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 92/100
dotnet/AspNetCore.Docs#37699 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
SubtitleEdit/subtitleedit#15108 · 1 bình luận ·