Libgit2sharp获取远程分支

时间:2016-05-30 14:04:34

标签: c# git libgit2sharp

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

一样

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

我在这里遗漏了什么(希望我这么做)。

TIA答案!

Grtz, 罗纳德

更新(长期评论): 好的,所以这是用例。公司提供ssrs报告,我们需要通过TAP进行部署。所以我的想法是通过Git做到这一点。对于每次更改,让他们在此分支中创建分支,上传/更改/等。并迭代此分支中的更改,直到一切正常。在迭代中,他们应该能够(重新)部署自己至少T.在最后阶段,我们将brnanch合并到master并在P中重新部署master。在Github中,你可以完全点击'这个流程,但当然我想要自动化这个并且最好还是按下按钮,所以他们不需要我这样做。那么这里最好的程序化选择是什么?当他们创建一个分支并开始在T中部署时,我应该创建(克隆)repo,将我的本地repo指向特定分支,获取文件(.sql和.rdl文件)并执行/上传这些文件吗?我不知道当你克隆一个repo时,你用它克隆所有的分支。到目前为止,谢谢!

1 个答案:

答案 0 :(得分:1)

如果您想使用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))
{
    // ...
}

要列出远程分支的名称而不克隆仓库,您可以使用以下内容:

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