libgit2sharp 获取远程分支

Libgit2sharp Get remote branches

也许之前有人问过,但我找不到明确的答案。当我需要使用 gitlib2sharp 列出存储库的分支时,我真的首先需要克隆到本地存储库吗?那有什么意义呢?我只想克隆一个特定的分支,就像你用 git clone https://bla/repo.git -b branch1

现在我首先需要进行本地结帐,然后获取分支机构并从那里进行第二轮。

我是不是漏掉了什么(希望是)。

TIA 为您解答!

格茨, 罗纳德

更新(期待评论): 好的,这是用例。某公司下发ssrs报表,我们需要通过TAP部署。所以我的想法是通过 Git 来做到这一点。对于每个更改,让他们在该分支中创建一个分支 upload/alter/etc。并在此分支中迭代更改,直到一切正常。在迭代中,他们应该能够在至少 T 上(重新)部署自己。在最后阶段,我们将 brnanch 合并到 master 并在 P 中(重新)部署 master。在 Github 中,您可以完全 'click' 这个流程,但我当然想自动化这个,最好让其他人按下按钮,这样他们就不需要我了。那么这里最好的编程选择是什么?当他们创建分支并开始在 T 中部署时,我是否应该创建(克隆)存储库,将我的本地存储库指向特定分支,获取文件(.sql 和 .rdl 文件)和 execute/upload这些?我不知道当你克隆一个 repo 时,你克隆了它的所有分支。到目前为止已经谢谢了!

如果你想用 libgtk2sharp 做类似 git clone https://bla/repo.git -b branch1 的事情,试试这个:

var exampleRepositoryUrl = "https://github.com/npgsql/npgsql.git";
var exampleDestinationFolder = "branch-hotfix-3.0.8";
var exampleBranchName = "hotfix/3.0.8";

var repositoryClonedPath = Repository.Clone(exampleRepositoryUrl, 
                                            exampleDestinationFolder,
                                            new CloneOptions()
{
    BranchName = exampleBranchName 
});

using (var clonedRepo = new Repository(repositoryClonedPath))
{
    // ...
}

要在不克隆 repo 的情况下列出远程分支的名称,您可以使用这样的方法:

var branches = Repository.ListRemoteReferences(exampleRepositoryUrl)
                         .Where(elem => elem.IsLocalBranch)
                         .Select(elem => elem.CanonicalName
                                             .Replace("refs/heads/", ""));