Index.Remove with directory/pattern does not always work
还没有人认领这个 Issue。
评估
调研方向
首先运行 TestRemove 单元测试,并检查 repo.Index.Remove("*") 的行为与直接删除 "a.txt" 相比有何不同。跟踪索引删除以及随后 RetrieveStatus() 的结果,包括 commit 操作是否会影响模式匹配。完成的标准是:现有测试在使用通配符删除时通过,并且直接使用文件名时的行为仍然正确。
由索引模型根据 Issue 内容生成。
描述
The problem could be related to the commit operation but I'm not sure. If instead of repo.Index.Remove("*") you pass the filename, it is correctly removed from the Index.
Also if you commit the file using the console git client the * version starts working correctly.
For reproduction please see the following unit test:
using LibGit2Sharp;
using NUnit.Framework;
using System;
using System.IO;
using System.Linq;
namespace Tests
{
public class LibGitTest
{
[Test]
public void TestRemove()
{
var tempPath = Path.Combine(Path.GetTempPath(), "LibGitTest");
if (Directory.Exists(tempPath))
{
DeleteDirectory(tempPath);
}
Directory.CreateDirectory(tempPath);
using (var repo = new Repository(Repository.Init(tempPath)))
{
File.WriteAllText(Path.Combine(tempPath, "a.txt"), "some text");
repo.Stage("*.*");
var signature = repo.Config.BuildSignature(DateTimeOffset.Now);
repo.Commit("Initial commit", signature, signature);
repo.Index.Remove("*");
// repo.Index.Remove("a.txt"); // uncomment this line to make the test pass
var status = repo.RetrieveStatus();
Assert.Contains("a.txt", status.Removed.Select(entry => entry.FilePath).ToArray());
}
}
private static void DeleteDirectory(string tempPath)
{
// Some files in the .git folder are readonly, I'm not sure whether that's normal, but we need to reset the flag in order to successfully delete the directory
Directory.EnumerateFiles(Path.Combine(tempPath), "*", SearchOption.AllDirectories)
.ForEach(f => File.SetAttributes(f, File.GetAttributes(f) & ~FileAttributes.ReadOnly));
Directory.Delete(tempPath, recursive: true);
}
}
}
- 主要语言
- C#
- 星标
- 3.5k
- 派生
- 925
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
libgit2/libgit2sharp 的其他 Issue
-
难度 4/5 3-5 天 新手友好度 52/100
libgit2/libgit2sharp#2193 · 2 条评论 ·
-
难度 4/5 3-5 天 新手友好度 38/100
libgit2/libgit2sharp#2192 · 1 条评论 ·
-
Website is down 未关闭
难度 4/5 3-5 天 新手友好度 20/100
libgit2/libgit2sharp#2191 · 2 个 reaction ·
-
难度 3/5 1-2 天 新手友好度 68/100
libgit2/libgit2sharp#2189 · 1 个 reaction ·
-
难度 3/5 1-2 天 新手友好度 35/100
libgit2/libgit2sharp#2187 · 2 条评论 ·
查看 libgit2/libgit2sharp 的全部 Issue
相似的 Issue
-
bug
难度 1/5 1 小时以内 新手友好度 75/100
sillsdev/languageforge-lexbox#2665 ·
-
bug documentation frontend
难度 2/5 1-3 小时 新手友好度 72/100
azurenoops/spin_agent#975 ·
-
难度 2/5 1-3 小时 新手友好度 86/100
-
:watch: Not Triaged 11.0 fundamentals/subsvc
难度 2/5 1-3 小时 新手友好度 92/100
dotnet/AspNetCore.Docs#37699 ·
-
难度 2/5 1-3 小时 新手友好度 72/100
SubtitleEdit/subtitleedit#15108 · 1 条评论 ·