2016-05-30 121 views
1

也许之前问过,但我找不到明确的答案。当我需要用gitlib2sharp列出repo的分支时,我真的首先需要克隆到本地repo吗?那是什么意思?我只想克隆一个特定的分支,就像你用git克隆https://bla/repo.git -b分支1Libgit2sharp获取远程分支

现在我首先需要做一个本地结账,然后得到分支并从那里做第二轮。

我在这里错过了什么(希望我)。

TIA for your answer!

Grtz, 罗纳德

更新(长征求意见): OK,所以这里的用例。一家公司提供ssrs报告,我们需要通过TAP进行部署。所以我的想法是通过Git来做到这一点。对于每个更改,让他们在这个分支中创建分支,上传/更改/等。并重复在这个分支的变化,直到一切正常。在迭代中,他们应该至少能够(重新)部署自己。在最后阶段,我们将体系合并到主体中并(重新)部署主体。在Github中,您可以完全“点击”这个流程,但是当然我想自动执行此操作,并最好按下按钮,所以它们不需要我这样做。那么这里最好的程序化选择是什么?当他们创建一个分支并开始在T中部署时,我应该创建(克隆)回购,将本地回购指向特定分支,获取文件(.sql和.rdl文件)并执行/上传这些文件?我不知道,当你克隆一个回购站时,你可以用它克隆所有分支。感谢迄今已经!

+0

仅供参考:git clone https://bla/repo.git -b branch1'无论如何都会获取所有分支,如果您真的只想获取一个没有不属于该分支的comm-ish分支'tree-ish',你需要初始化ze一个空的回购,添加一个远程跟踪分支与原始回购的来源,然后在该分支结账... – SushiHangover

+0

@SushiHangover你不能只是:'git clone https://bla/repo.git -b分支1 - 单分支“。我并没有真正有理由使用它,但是像'--single-branch'这样的文档看起来应该只能获取与所需分支相关的提交。 – Alderath

+0

@Alderath你是正确的,使用' - 单分支'工作(取决于git版本,以及浅层克隆('--depth 1'),甚至最近如果在服务器上启用了克隆单个提交('上传包设置为“真”)...只取决于git版本(客户端和服务器);-) – SushiHangover

回答

0

如果你想要做这样的事情混帐克隆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/", "")); 
+0

谢谢!我也到了这里,但我需要得到分支的友好名称。您可以通过repo对象访问分支集合,但是您首先需要回购对象,这是一个已签出的本地磁盘回购。这正是我想避免检索分支名称的原因。但也许我以错误的方式使用Git? – Ronald

+0

我已经更新了我的答案,并列出了一个没有克隆回购库的远程分支名单的例子。也许它会有帮助。 – PiKos

+0

谢谢!那就是我一直在寻找的! – Ronald