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/", ""));
也许之前有人问过,但我找不到明确的答案。当我需要使用 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/", ""));