Skip to content

Commit 3318b73

Browse files
authored
Merge pull request #1870 from tyrielv/tree-definition-delete
Test and fix for #1869
2 parents af85e63 + 2dd7eca commit 3318b73

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

LibGit2Sharp.Tests/TreeDefinitionFixture.cs

+18
Original file line numberDiff line numberDiff line change
@@ -587,5 +587,23 @@ public void CanAddAnExistingBlobEntryWithAnExistingTree()
587587
Assert.NotNull(td["1/branch_file.txt"]);
588588
}
589589
}
590+
591+
[Fact]
592+
public void CanRemoveADirectoryWithChildren()
593+
{
594+
const string blobSha = "a8233120f6ad708f843d861ce2b7228ec4e3dec6";
595+
string path = SandboxBareTestRepo();
596+
using (var repo = new Repository(path))
597+
{
598+
TreeDefinition td = new TreeDefinition();
599+
var blob = repo.Lookup<Blob>(blobSha);
600+
td.Add("folder/subfolder/file1", blob, Mode.NonExecutableFile);
601+
td.Add("folder/file1", blob, Mode.NonExecutableFile);
602+
td.Remove("folder");
603+
Assert.Null(td["folder"]);
604+
Tree t = repo.ObjectDatabase.CreateTree(td);
605+
Assert.Null(t["folder"]);
606+
}
607+
}
590608
}
591609
}

LibGit2Sharp/TreeDefinition.cs

+1
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public virtual TreeDefinition Remove(string treeEntryPath)
9494
if (segments.Item2 == null)
9595
{
9696
entries.Remove(segments.Item1);
97+
unwrappedTrees.Remove(segments.Item1);
9798
}
9899

99100
if (!unwrappedTrees.ContainsKey(segments.Item1))

0 commit comments

Comments
 (0)