在 VB.net 中使用 NGit 克隆 GIT 存储库

Clone a GIT repository with NGit in VB.net

我的objective是通过.NET代码对GIT仓库进行克隆和拉取操作。克隆时,我特别想克隆一个特定的分支。如果一个特定的存储库已经被克隆但是有一个不同的分支,那么我也希望能够知道它。

我已经在 Java 中使用 jGit 成功实现了这个,但现在我需要在 .NET 中开发一个类似的工具,我更喜欢使用 NGit,因为它是jGIT 库的直接端口。

然而,尽管我使用了将相关参数传递给 NGit 中的克隆方法的确切方法,但我没有看到存储库被下载。下面是我的代码:

Dim branches As List(Of String) = New List(Of String) From {branch}
Git.CloneRepository.
    SetURI(cloneURL).
    SetDirectory(New Sharpen.FilePath(downloadFolder)).  
    SetBranchesToClone(branches).
    SetCredentialsProvider(New UsernamePasswordCredentialsProvider(userID, userPwd)).
    SetBranch(branch).
    Call()

当我运行这个时,它需要几秒钟并且没有错误。但在下载文件夹中,我看到只有一个 .git 文件夹,其中包含一些元数据,并且未下载源文件。如果我从上面的代码中删除 SetBranchesToCloneSetBranch 方法,它会从 master 分支成功下载文件。

为什么在提供分支信息时它不起作用?

我发现虽然在 jGit 中你可以使用像 MyBranch 这样的确切分支名称,但在 NGit 的情况下你需要传递 refs/heads/MyBranch 才能工作。显然,尽管 nGit 声称是 jGit 的自动端口,但它们的工作方式存在一些细微差别。