From 131df97d431404458e805009bda794abfb00f45f Mon Sep 17 00:00:00 2001 From: Kris Alder Date: Thu, 21 Apr 2022 15:54:53 -0700 Subject: 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. --- pkg/vcs/git.go | 9 +++++++++ 1 file changed, 9 insertions(+) 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() } -- cgit mrf-deployment