Please consider adding AOT support for .Diff.Compare<T>()
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
Piste de recherche
Commencez par le projet console .NET 8 et sa configuration aot-test.csproj/Program.cs, puis reproduisez l’échec avec dotnet publish et repo.Diff.Compare(commit1.Tree, commit2.Tree). C’est terminé lorsque l’exécutable AOT natif termine l’appel de diff et signale une modification de diff au lieu de lever NullReferenceException.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- C#
- Étoiles
- 3.5k
- Forks
- 925
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de libgit2/libgit2sharp
-
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
libgit2/libgit2sharp#2193 · 2 commentaires ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 38/100
libgit2/libgit2sharp#2192 · 1 commentaire ·
-
Website is down Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 20/100
libgit2/libgit2sharp#2191 · 2 réactions ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
libgit2/libgit2sharp#2189 · 1 réaction ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
libgit2/libgit2sharp#2187 · 2 commentaires ·
Toutes les issues de libgit2/libgit2sharp
Issues similaires
-
Add more to the documentation Ouverte:watch: Not Triaged dotnet-fsharp/svc
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
-
Client customer-reported needs-team-attention question Service Attention WebPubSub
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Azure/azure-sdk-for-net#63292 · 3 commentaires · 1 réaction ·
-
Issue-Enhancement Needs-Triage
Difficulté 1/5 Moins d'une heure Accessibilité débutants 86/100
PowerShell/PowerShell#28061 · 2 réactions ·
-
dependencies needs-team-triage server-Azure.Mcp
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
aspnet-core/svc aspnetcore-signalr/subsvc doc-enhancement Pri2 SignalR
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
dotnet/AspNetCore.Docs#37729 ·