Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TreeDefinition.Remove fails to remove unwrapped trees. #1869

Open
tyrielv opened this issue Feb 11, 2021 · 1 comment
Open

TreeDefinition.Remove fails to remove unwrapped trees. #1869

tyrielv opened this issue Feb 11, 2021 · 1 comment

Comments

@tyrielv
Copy link
Contributor

tyrielv commented Feb 11, 2021

You are opening a bug report against the LibGit2Sharp project: we
use GitHub Issues for tracking bug reports and feature requests. If
you have a question about an API or usage, please ask on StackOverflow:
http://stackoverflow.com/questions/tagged/libgit2sharp.

Otherwise, to report a bug, please fill out the reproduction steps
(below) and delete these introductory paragraphs. Thanks!

Reproduction steps

var dir = Path.GetTempPath() + Path.GetRandomFileName();
Repository.Init(dir);
Repository r = new Repository(dir);
Blob empty = r.ObjectDatabase.CreateBlob(new MemoryStream());
var td = new TreeDefinition();
td.Add("a/b/c", empty, Mode.NonExecutableFile);
td.Remove("a");
bool presentInTreeDefinition = td["a"] != null;
Tree t = r.ObjectDatabase.CreateTree(td);
bool presentInTree = t["a"] != null;

Expected behavior

Both presentInTreeDefinition and presentInTree should be false.

Actual behavior

presentInTreeDefinition is false, but presentInTree is true.

Version of LibGit2Sharp (release number or SHA1)

0.26.2

Operating system(s) tested; .NET runtime tested

Windows 10, .NET Core 3.1

@tyrielv
Copy link
Contributor Author

tyrielv commented Feb 11, 2021

entries.Remove(segments.Item1);

The tree entry is removed here, but the private field unwrapped tree is not removed unless it already has no subentries.
When the tree is built from the definition, the still-present unwrapped tree reintroduces what should have been removed.

tyrielv added a commit to tyrielv/libgit2sharp that referenced this issue Feb 11, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant