8000 Add TreeDefinition.Add(Submodule) · SinghVarun/libgit2sharp@d5c4a44 · GitHub
[go: up one dir, main page]

Skip to content

Commit d5c4a44

Browse files
committed
Add TreeDefinition.Add(Submodule)
1 parent 0058041 commit d5c4a44

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

LibGit2Sharp.Tests/TreeDefinitionFixture.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,33 @@ public void CanAddAnExistingBlob(string blobSha, string targetPath)
157157
}
158158
}
159159

160+
[Fact]
161+
public void CanAddAnExistingSubmodule()
162+
{
163+
const string submodulePath = "sm_unchanged";
164+
165+
using (var repo = new Repository(SubmoduleTestRepoWorkingDirPath))
166+
{
167+
var submodule = repo.Submodules[submodulePath];
168+
Assert.NotNull(submodule);
169+
170+
TreeDefinition td = TreeDefinition.From(repo.Head.Tip.Tree);
171+
Assert.NotNull(td[submodulePath]);
172+
173+
td.Remove(submodulePath);
174+
Assert.Null(td[submodulePath]);
175+
176+
td.Add(submodule);
177+
178+
TreeEntryDefinition fetched = td[submodulePath];
179+
Assert.NotNull(fetched);
180+
181+
Assert.Equal(submodule.HeadCommitId, fetched.TargetId);
182+
Assert.Equal(GitObjectType.Commit, fetched.Type);
183+
Assert.Equal(Mode.GitLink, fetched.Mode);
184+
}
185+
}
186+
160187
[Fact]
161188
public void CanAddAnExistingTree()
162189
{

LibGit2Sharp/TreeDefinition.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,18 @@ public virtual TreeDefinition Add(string targetTreeEntryPath, Tree tree)
174174
return Add(targetTreeEntryPath, ted);
175175
}
176176

177+
/// <summary>
178+
/// Adds or replaces a gitlink <see cref="TreeEntryDefinition"/> equivalent to <paramref name="submodule"/>.
179+
/// </summary>
180+
/// <param name="submodule">The <see cref="Submodule"/> to be linked.</param>
181+
/// <returns>The current <see cref="TreeDefinition"/>.</returns>
182+
public virtual TreeDefinition Add(Submodule submodule)
183+
{
184+
Ensure.ArgumentNotNull(submodule, "submodule");
185+
186+
return AddGitLink(submodule.Path, submodule.HeadCommitId);
187+
}
188+
177189
/// <summary>
178190
/// Adds or replaces a gitlink <see cref="TreeEntryDefinition"/>,
179191
/// referencing the commit identified by <paramref name="objectId"/>,

0 commit comments

Comments
 (0)
0