libgit2 / libgit2/libgit2sharp

Indexing a tree by path yields different result with trailing slash

Offen
#2,189 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
C#
Sterne
3.5k
Forks
925
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

When a slash is included when indexing into a tree to a subtree, the resulting TreeEntry has a path with a duplicated last path part.

using System.Text;
using LibGit2Sharp;

var path = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());

using var repo = new Repository(Repository.Init(path, isBare: true));

var bytes = Encoding.UTF8.GetBytes("Hello, World!");

var blob = repo.ObjectDatabase.CreateBlob(new MemoryStream(bytes));

var td = new TreeDefinition();
td.Add("some/deeply/nested/file", blob, Mode.NonExecutableFile);

var tree = repo.ObjectDatabase.CreateTree(td);

var withSlash = tree["some/deeply/"].Path;
var withoutSlash = tree["some/deeply"].Path;

Console.WriteLine(withSlash);       // some/deeply/deeply
Console.WriteLine(withoutSlash);    // some/deeply

I was seeing this across Linux and Windows, on versions 0.31 and 0.32 and .NET 10 and Framework 4.8

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Reproduziere die Abweichung anhand des bereitgestellten TreeDefinition- und Tree-Indexer-Beispiels und vergleiche die für "some/deeply/" und "some/deeply" zurückgegebenen Pfade. Verfolge die Konstruktion des TreeEntry-Pfads für indizierte Teilbäume und füge einen Regressionstest hinzu, der beide Eingaben abdeckt. Erledigt ist die Aufgabe, wenn die Indizierung mit abschließendem Schrägstrich denselben nicht duplizierten Pfad wie der entsprechende Pfad ohne Schrägstrich zurückgibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
csharp, git
Bereich
devtools
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
68/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.