diff options
| author | Kris Alder <kalder@google.com> | 2022-04-21 15:54:53 -0700 |
|---|---|---|
| committer | Aleksandr Nogikh <wp32pw@gmail.com> | 2022-04-22 15:53:27 +0200 |
| commit | 131df97d431404458e805009bda794abfb00f45f (patch) | |
| tree | 85c5f6a25e3b6c4ef95105a63fbe508dcef01f16 | |
| parent | f2c0ef2745dd142be4e07db94293b9b049c9ccfc (diff) | |
pkg/vcs: recursively clone git submodules
Android kernel source uses Git submodules to separate vendor- or
device-specific kernel modules from the main kernel source.
This calls 'git submodules update --init' after calls to 'git checkout',
which is the equivalent of adding the '--recurse-submodules' flag to
'git clone'.
For cases where submodules aren't used (all other Syzkaller targets)
this additional command is a no-op.
| -rw-r--r-- | pkg/vcs/git.go | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/pkg/vcs/git.go b/pkg/vcs/git.go index 22a665b37..b1ee502d6 100644 --- a/pkg/vcs/git.go +++ b/pkg/vcs/git.go @@ -92,6 +92,9 @@ func (git *git) Poll(repo, branch string) (*Commit, error) { if _, err := git.git("checkout", "origin/"+branch); err != nil { return nil, err } + if _, err := git.git("submodule", "update", "--init"); err != nil { + return nil, err + } return git.HeadCommit() } @@ -109,6 +112,9 @@ func (git *git) CheckoutBranch(repo, branch string) (*Commit, error) { if _, err := git.git("checkout", "FETCH_HEAD"); err != nil { return nil, err } + if _, err := git.git("submodule", "update", "--init"); err != nil { + return nil, err + } return git.HeadCommit() } @@ -138,6 +144,9 @@ func (git *git) SwitchCommit(commit string) (*Commit, error) { if _, err := git.git("checkout", commit); err != nil { return nil, err } + if _, err := git.git("submodule", "update", "--init"); err != nil { + return nil, err + } return git.HeadCommit() } |
