libgit2 / libgit2/libgit2sharp
Ignoring whitespaces on diff does not work
未关闭
还没有人认领这个 Issue。
- 主要语言
- C#
- 星标
- 3.5k
- 派生
- 925
- PR 合并指标
- 30 天内没有已合并 PR
描述
Expected behavior
When I call:
var options =
new CompareOptions()
{
ContextLines = Int32.MaxValue,
IncludeUnmodified = true,
Similarity =
new SimilarityOptions()
{
WhitespaceMode = WhitespaceMode.IgnoreAllWhitespace
}
};
Console.Write(
repo.Diff.Compare<Patch>(
branch.Tip.Tree,
DiffTargets.Index | DiffTargets.WorkingDirectory,
files,
null,
options
).First().Patch
)
the output is the same as using the git command git diff --ignore-all-space:
diff --git a/test.txt b/test.txt
index d209983..b2c9980 100644
--- a/test.txt
+++ b/test.txt
@@ -1,2 +1,2 @@
I am an initial content
-I am a changeable content
\ No newline at end of file
+I am a different content
\ No newline at end of file
Actual behavior
If have a file "test.txt" with committed content:
I am an inital content
I am a changeable content
and uncommitted content:
I am an inital content
I am a different content
(The first line has some additional whitespaces)
When I call:
var options =
new CompareOptions()
{
ContextLines = Int32.MaxValue,
IncludeUnmodified = true,
Similarity =
new SimilarityOptions()
{
WhitespaceMode = WhitespaceMode.IgnoreAllWhitespace
}
};
Console.Write(
repo.Diff.Compare<Patch>(
branch.Tip.Tree,
DiffTargets.Index | DiffTargets.WorkingDirectory,
files,
null,
options
).First().Patch
)
the output is
diff --git a/test.txt b/test.txt
index d209983..b2c9980 100644
--- a/test.txt
+++ b/test.txt
@@ -1,2 +1,2 @@
-I am an initial content
-I am a changeable content
\ No newline at end of file
+I am an initial content
+I am a different content
\ No newline at end of file
Version of LibGit2Sharp (release number or SHA1)
v0.26.2
Operating system(s) tested; .NET runtime tested
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
首先使用 CompareOptions、SimilarityOptions 和 WhitespaceMode.IgnoreAllWhitespace 重现 Compare 示例,然后将其输出与 git diff --ignore-all-space 进行比较。跟踪处理 Whitespace 模式的 diff 比较路径。当仅包含 Whitespace 的更改被忽略,而实质性更改仍出现在 patch 中时,即表示完成。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- csharp, git
- 领域
- devtools
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 45/100