Libgit2sharp获取远程分支
问题描述:
也许之前问过,但我找不到明确的答案。当我需要用gitlib2sharp列出repo的分支时,我真的首先需要克隆到本地repo吗?那是什么意思?我只想克隆一个特定的分支,就像你用git克隆https://bla/repo.git -b分支1Libgit2sharp获取远程分支
现在我首先需要做一个本地结账,然后得到分支并从那里做第二轮。
我在这里错过了什么(希望我)。
TIA for your answer!
Grtz, 罗纳德
更新(长征求意见): OK,所以这里的用例。一家公司提供ssrs报告,我们需要通过TAP进行部署。所以我的想法是通过Git来做到这一点。对于每个更改,让他们在这个分支中创建分支,上传/更改/等。并重复在这个分支的变化,直到一切正常。在迭代中,他们应该至少能够(重新)部署自己。在最后阶段,我们将体系合并到主体中并(重新)部署主体。在Github中,您可以完全“点击”这个流程,但是当然我想自动执行此操作,并最好按下按钮,所以它们不需要我这样做。那么这里最好的程序化选择是什么?当他们创建一个分支并开始在T中部署时,我应该创建(克隆)回购,将本地回购指向特定分支,获取文件(.sql和.rdl文件)并执行/上传这些文件?我不知道,当你克隆一个回购站时,你可以用它克隆所有分支。感谢迄今已经!
答
如果你想要做这样的事情混帐克隆https://bla/repo.git -b BRANCH1与libgtk2sharp试试这个:
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/", ""));
仅供参考:git clone https://bla/repo.git -b branch1'无论如何都会获取所有分支,如果您真的只想获取一个没有不属于该分支的comm-ish分支'tree-ish',你需要初始化ze一个空的回购,添加一个远程跟踪分支与原始回购的来源,然后在该分支结账... – SushiHangover
@SushiHangover你不能只是:'git clone https://bla/repo.git -b分支1 - 单分支“。我并没有真正有理由使用它,但是像'--single-branch'这样的文档看起来应该只能获取与所需分支相关的提交。 – Alderath
@Alderath你是正确的,使用' - 单分支'工作(取决于git版本,以及浅层克隆('--depth 1'),甚至最近如果在服务器上启用了克隆单个提交('上传包设置为“真”)...只取决于git版本(客户端和服务器);-) – SushiHangover