如何检索工作目录中的所有文件的列表

时间:2015-04-06 08:27:13

标签: git libgit2 libgit2sharp

我正在寻找一种方法来获取工作目录中所有文件的列表,并且他们需要FileStatus

我发现repo.RetrieveStatus()是完美的,但它不会返回未经修改的文件。

    private void GetFilesList()
    {
        //1. Get files in repository
        Repository repo = new Repository(LocalRepo);
        List<File> filelist = new List<File>();
        foreach (var item in repo.RetrieveStatus()) //This only lists altered files
        { 
            filelist.Add(new File(item.FilePath, this, item.State));
        }
        Files = filelist.ToArray<File>();   
    }

我能想到这样做的唯一方法是创建两个列表,一个包含目录中的所有文件:Directory.GetFiles(); - (ListA)

然后将其与从RetrieveStatus() - (ListB)创建的列表进行比较。然后我必须假设 ListA中列表B中没有的任何文件都没有改变。

当然有更好的方法吗?

我已经在GitHub上搜索了存储库,我唯一能找到的问题是this one ,它似乎没有相关性。

有没有人知道我可以用于此目的的LibGit2Sharp库中的任何其他方法?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

有关此确切功能的持续拉取请求(请参阅 #863 )。

建议的实现是将可选的布尔值传递给StatusOptions

RepositoryStatus status = repo.RetrieveStatus(
     new StatusOptions() { IncludeUnaltered = true | false });

随意订阅,以便及时了解其进度(以及最终合并)。