使用带有libgit2sharp的git工作树来克隆和签出具有多个分支的现有存储库

问题描述

我想编写一个C#程序,开发人员可以使用它来克隆几个添加了工作树的git repos。 所以我的主要想法是使用libgit2sharp克隆例如一个母版,并添加带有检出的“ develop”分支(已经存在)的工作树

我还没有找到太多有关如何使用工作树功能的信息- 当我使用.bat时,我记得似乎有一个(曾经有过)限制,如果我想添加一个工作树,我必须已经在本地创建了该分支,否则将在本地创建一个具有相同名称的分支。>

基本上类似于:

cd C:\gittryout\testrepo\
git clone REPO master
cd master
//to cicumvent creating a local branch develop if it hasn't been checked out already
git checkout develop
git checkout master
git worktree add --checkout ../develop develop

那会给我

C:\gittryout\testrepo\master (with master)
C:\gittryout\testrepo\develop (with develop)

此刻我的代码看起来与以下内容类似:

public void TryToCloneWithWorktree()
{
  string Username = "acorrectusername";
  string Password = "acorrectpw";
  string RepositoryUrl = @"path/to/git/testrepo";

  var co = new CloneOptions();
  co.CredentialsProvider = new CredentialsHandler(
                    (url,usernameFromUrl,types) =>
                    new UsernamePasswordCredentials()
                    {
                      Username = Username,Password = Password
                    }
                    );
  co.BranchName = "master";
  string RepositoryPath = @"C:\gittryout\testrepo\master";
  string WorktreePath = @"C:\gittryout\testrepo\develop";
  string WorktreeSHA1 = "develop";
  using (var repo = new Repository())
  {
    Repository.Clone(RepositoryUrl,RepositoryPath,co);
    repo.Worktrees.Add(WorktreeSHA1,WorktreeSHA1,WorktreePath,false);
  }
}

但是运行此命令后,克隆是正确的(使用分支主服务器),并且在其中驻留了具有目标。\ testing的快捷方式_git2_a40776

我是否也需要克隆添加的工作树,或者如何使用libgit2sharp实现蝙蝠在C#中所做的工作?

br

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)