如何通过libgit2sharp检索本地git repos列表?

时间:2015-06-12 19:37:23

标签: libgit2sharp

通过libgit2sharp如何获取本地回购列表?

我在git命令列表中看不到任何有用的内容

https://github.com/libgit2/libgit2sharp/wiki/LibGit2Sharp-Hitchhiker%27s-Guide-to-Git

3 个答案:

答案 0 :(得分:2)

  

通过libgit2sharp如何获取本地回购列表?

LibGit2sharp是一个允许用户与git存储库交互的库。

但是,它没有提供扫描文件系统的任何功能,搜索可能存在的本地存储库。

答案 1 :(得分:0)

如果您实际上是在询问征兵中的分支机构:

    public List<string> GetLocalBranchList()
    {
        var output = new List<string>();

        using (var repo = new Repository(_LocalGitPath))
        {
            foreach (var branch in repo.Branches)
                output.Add(branch.FriendlyName);

            return output;
        }
    }

如果你真的是意味着责备而不是分支,那么没有。但是你真的不需要libgit2sharp。只需扫描所有目录中每个登记中存在的一些文件或文件夹(.git隐藏文件夹,.gitignore等)

答案 2 :(得分:0)

这对我使用 libgit2sharp 查找目录(非递归)内的存储库列表很有用。

用法示例:

var gitService = new GitService();
var repositoryPaths = gitService.FindRepositoryPaths(rootDirectory);

public class GitService
{
    private const string GitRepoFolder = ".git";

    public IEnumerable<string> FindRepositoryPaths(string path)
    {
        var repositories = new List<string>();

        var directories = Directory.EnumerateDirectories(path);
        foreach(var directory in directories)
        {
            var possibleGitDirectory = Path.Combine(directory, GitRepoFolder);
            if (Directory.Exists(possibleGitDirectory))
            {
                try
                {
                    using (var repo = new Repository(directory))
                    {
                        if (repo != null)
                        {
                            repositories.Add(directory);
                        }
                    }
                } 
                catch(RepositoryNotFoundException)
                {

                }
            }
        }

        return repositories;
    }
}