Skip to content

Commit 3fb4baf

Browse files
committed
Mark DiffTarget obsolete
1 parent adbf3fc commit 3fb4baf

File tree

6 files changed

+78
-16
lines changed

6 files changed

+78
-16
lines changed

LibGit2Sharp.Tests/DiffTreeToTargetFixture.cs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ public void CanCompareASimpleTreeAgainstTheWorkDir()
4444
{
4545
SetUpSimpleDiffContext(repo);
4646

47-
TreeChanges changes = repo.Diff.Compare(repo.Head.Tip.Tree, DiffTarget.WorkingDirectory);
47+
TreeChanges changes = repo.Diff.Compare(repo.Head.Tip.Tree,
48+
DiffTargets.WorkingDirectory);
4849

4950
var expected = new StringBuilder()
5051
.Append("diff --git a/file.txt b/file.txt\n")
@@ -80,7 +81,8 @@ public void CanCompareASimpleTreeAgainstTheWorkDirAndTheIndex()
8081
{
8182
SetUpSimpleDiffContext(repo);
8283

83-
TreeChanges changes = repo.Diff.Compare(repo.Head.Tip.Tree, DiffTarget.BothWorkingDirectoryAndIndex);
84+
TreeChanges changes = repo.Diff.Compare(repo.Head.Tip.Tree,
85+
DiffTargets.Index | DiffTargets.WorkingDirectory);
8486

8587
var expected = new StringBuilder()
8688
.Append("diff --git a/file.txt b/file.txt\n")
@@ -136,7 +138,8 @@ public void ShowcaseTheDifferenceBetweenTheTwoKindOfComparison()
136138
Assert.Equal(FileStatus.Removed | FileStatus.Untracked, state);
137139

138140

139-
TreeChanges wrkDirToIdxToTree = repo.Diff.Compare(repo.Head.Tip.Tree, DiffTarget.BothWorkingDirectoryAndIndex);
141+
TreeChanges wrkDirToIdxToTree = repo.Diff.Compare(repo.Head.Tip.Tree,
142+
DiffTargets.Index | DiffTargets.WorkingDirectory);
140143
var expected = new StringBuilder()
141144
.Append("diff --git a/file.txt b/file.txt\n")
142145
.Append("deleted file mode 100644\n")
@@ -148,7 +151,8 @@ public void ShowcaseTheDifferenceBetweenTheTwoKindOfComparison()
148151

149152
Assert.Equal(expected.ToString(), wrkDirToIdxToTree.Patch);
150153

151-
TreeChanges wrkDirToTree = repo.Diff.Compare(repo.Head.Tip.Tree, DiffTarget.WorkingDirectory);
154+
TreeChanges wrkDirToTree = repo.Diff.Compare(repo.Head.Tip.Tree,
155+
DiffTargets.WorkingDirectory);
152156
expected = new StringBuilder()
153157
.Append("diff --git a/file.txt b/file.txt\n")
154158
.Append("index ce01362..4f125e3 100644\n")
@@ -182,7 +186,8 @@ public void CanCompareASimpleTreeAgainstTheIndex()
182186
{
183187
SetUpSimpleDiffContext(repo);
184188

185-
TreeChanges changes = repo.Diff.Compare(repo.Head.Tip.Tree, DiffTarget.Index);
189+
TreeChanges changes = repo.Diff.Compare(repo.Head.Tip.Tree,
190+
DiffTargets.Index);
186191

187192
var expected = new StringBuilder()
188193
.Append("diff --git a/file.txt b/file.txt\n")
@@ -228,7 +233,7 @@ public void CanCompareAMoreComplexTreeAgainstTheIndex()
228233
{
229234
Tree tree = repo.Head.Tip.Tree;
230235

231-
TreeChanges changes = repo.Diff.Compare(tree, DiffTarget.Index);
236+
TreeChanges changes = repo.Diff.Compare(tree, DiffTargets.Index);
232237
Assert.NotNull(changes);
233238

234239
Assert.Equal(3, changes.Count());
@@ -255,7 +260,9 @@ public void CanCompareASubsetofTheTreeAgainstTheIndex()
255260
{
256261
Tree tree = repo.Head.Tip.Tree;
257262

258-
TreeChanges changes = repo.Diff.Compare(tree, DiffTarget.Index, new[] { "deleted_staged_file.txt", "1/branch_file.txt", "I-do/not-exist" });
263+
TreeChanges changes = repo.Diff.Compare(tree, DiffTargets.Index,
264+
new[] { "deleted_staged_file.txt", "1/branch_file.txt", "I-do/not-exist" });
265+
259266
Assert.NotNull(changes);
260267

261268
Assert.Equal(1, changes.Count());
@@ -296,7 +303,7 @@ public void CanCopeWithEndOfFileNewlineChanges()
296303
File.AppendAllText(fullpath, "\n");
297304
repo.Index.Stage("file.txt");
298305

299-
TreeChanges changes = repo.Diff.Compare(repo.Head.Tip.Tree, DiffTarget.Index);
306+
TreeChanges changes = repo.Diff.Compare(repo.Head.Tip.Tree, DiffTargets.Index);
300307
Assert.Equal(1, changes.Modified.Count());
301308
Assert.Equal(1, changes.LinesAdded);
302309
Assert.Equal(1, changes.LinesDeleted);

LibGit2Sharp/Diff.cs

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,15 @@ public virtual ContentChanges Compare(Blob oldBlob, Blob newBlob)
103103
}
104104
}
105105

106-
private readonly IDictionary<DiffTarget, Func<Repository, TreeComparisonHandleRetriever>> handleRetrieverDispatcher = BuildHandleRetrieverDispatcher();
106+
private readonly IDictionary<DiffTargets, Func<Repository, TreeComparisonHandleRetriever>> handleRetrieverDispatcher = BuildHandleRetrieverDispatcher();
107107

108-
private static IDictionary<DiffTarget, Func<Repository, TreeComparisonHandleRetriever>> BuildHandleRetrieverDispatcher()
108+
private static IDictionary<DiffTargets, Func<Repository, TreeComparisonHandleRetriever>> BuildHandleRetrieverDispatcher()
109109
{
110-
return new Dictionary<DiffTarget, Func<Repository, TreeComparisonHandleRetriever>>
110+
return new Dictionary<DiffTargets, Func<Repository, TreeComparisonHandleRetriever>>
111111
{
112-
{ DiffTarget.Index, r => IndexToTree(r) },
113-
{ DiffTarget.WorkingDirectory, r => WorkdirToTree(r) },
114-
{ DiffTarget.BothWorkingDirectoryAndIndex, r => WorkdirAndIndexToTree(r) },
112+
{ DiffTargets.Index, IndexToTree },
113+
{ DiffTargets.WorkingDirectory, WorkdirToTree },
114+
{ DiffTargets.Index | DiffTargets.WorkingDirectory, WorkdirAndIndexToTree },
115115
};
116116
}
117117

@@ -122,11 +122,41 @@ private static IDictionary<DiffTarget, Func<Repository, TreeComparisonHandleRetr
122122
/// <param name = "diffTarget">The target to compare to.</param>
123123
/// <param name = "paths">The list of paths (either files or directories) that should be compared.</param>
124124
/// <returns>A <see cref = "TreeChanges"/> containing the changes between the <see cref="Tree"/> and the selected target.</returns>
125+
[Obsolete("This method will be removed in the next release. Please use Compare(Tree, Tree, DiffTargets, IEnumerable<string>) instead.")]
125126
public virtual TreeChanges Compare(Tree oldTree, DiffTarget diffTarget, IEnumerable<string> paths = null)
127+
{
128+
DiffTargets targets;
129+
130+
switch (diffTarget)
131+
{
132+
case DiffTarget.Index:
133+
targets = DiffTargets.Index;
134+
break;
135+
136+
case DiffTarget.WorkingDirectory:
137+
targets = DiffTargets.WorkingDirectory;
138+
break;
139+
140+
default:
141+
targets = DiffTargets.Index | DiffTargets.WorkingDirectory;
142+
break;
143+
}
144+
145+
return Compare(oldTree, targets, paths);
146+
}
147+
148+
/// <summary>
149+
/// Show changes between a <see cref = "Tree"/> and the Index, the Working Directory, or both.
150+
/// </summary>
151+
/// <param name = "oldTree">The <see cref = "Tree"/> to compare from.</param>
152+
/// <param name = "diffTargets">The targets to compare to.</param>
153+
/// <param name = "paths">The list of paths (either files or directories) that should be compared.</param>
154+
/// <returns>A <see cref = "TreeChanges"/> containing the changes between the <see cref="Tree"/> and the selected target.</returns>
155+
public virtual TreeChanges Compare(Tree oldTree, DiffTargets diffTargets, IEnumerable<string> paths = null)
126156
{
127157
Ensure.ArgumentNotNull(oldTree, "oldTree");
128158

129-
var comparer = handleRetrieverDispatcher[diffTarget](repo);
159+
var comparer = handleRetrieverDispatcher[diffTargets](repo);
130160

131161
using (GitDiffOptions options = BuildOptions(paths))
132162
using (DiffListSafeHandle dl = BuildDiffListFromTreeAndComparer(oldTree.Id, comparer, options))

LibGit2Sharp/DiffTarget.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
using System;
2+
13
namespace LibGit2Sharp
24
{
35
/// <summary>
46
/// The target of a Tree based diff comparison.
57
/// </summary>
8+
[Obsolete("This type will be removed in the next release. Please use DiffTargets instead.")]
69
public enum DiffTarget
710
{
811
/// <summary>

LibGit2Sharp/DiffTargets.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using System;
2+
3+
namespace LibGit2Sharp
4+
{
5+
/// <summary>
6+
/// The targets of a Tree based diff comparison.
7+
/// </summary>
8+
[Flags]
9+
public enum DiffTargets
10+
{
11+
/// <summary>
12+
/// The repository index.
13+
/// </summary>
14+
Index = 1,
15+
16+
/// <summary>
17+
/// The working directory.
18+
/// </summary>
19+
WorkingDirectory = 2,
20+
}
21+
}

LibGit2Sharp/LibGit2Sharp.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@
7878
<Compile Include="Core\ILazy.cs" />
7979
<Compile Include="Core\LazyGroup.cs" />
8080
<Compile Include="Core\Proxy.cs" />
81+
<Compile Include="DiffTargets.cs" />
8182
<Compile Include="Handlers.cs" />
8283
<Compile Include="MergeConflictException.cs" />
8384
<Compile Include="ReferenceCollectionExtensions.cs" />

LibGit2Sharp/Repository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,7 @@ public void Reset(string commitish = "HEAD", IEnumerable<string> paths = null)
571571
}
572572

573573
Commit commit = LookupCommit(commitish);
574-
TreeChanges changes = Diff.Compare(commit.Tree, DiffTarget.Index, paths);
574+
TreeChanges changes = Diff.Compare(commit.Tree, DiffTargets.Index, paths);
575575

576576
Index.Reset(changes);
577577
}

0 commit comments

Comments
 (0)