0

我有一个包含子模块的项目,如此处所示。

[submodule "repo-a"]
    path = repo-a
    url = https://example.com/scm/repo-a.git
[submodule "repo-b"]
    path = repo-b
    url = https://example.com/scm/repo-b.git
[submodule "repo-c"]
    path = repo-c
    url = https://example.com/scm/repo-c.git

我正在使用 go-git pkg 并尝试使用此处显示的选项进行克隆,

cloneOpts := &git.CloneOptions{
      URL:               url,
      RecurseSubmodules: git.DefaultSubmoduleRecursionDepth,
}

它不会递归地拉取子模块。我只看到空目录。我错过了什么吗?

4

1 回答 1

1

即使在您发表评论后,我也不知道您目前的使用情况go-git;所以请提供你的源代码。

我现在正在回答您关于“如何克隆 repo 及其子模块”的原始问题go-git

package main

import (
    "os"

    "github.com/go-git/go-git/v5"
)

func main() {
    repoURL := "https://github.com/githubtraining/example-dependency"
    clonePath := "example-repo"

    _, err := git.PlainClone(clonePath, false, &git.CloneOptions{
        URL:      repoURL,
        Progress: os.Stdout,
        // Enable submodule cloning.
        RecurseSubmodules: git.DefaultSubmoduleRecursionDepth,
    })

    if err != nil {
        panic(err)
    }

    println("Have a look at example-repo/js to see a cloned sub-module")
}

正如你在运行后看到的那样,example-repo/js包含克隆的子模块。

于 2021-12-19T16:14:10.410 回答