aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/vcs/git.go
diff options
context:
space:
mode:
authorKris Alder <kalder@google.com>2022-04-21 15:54:53 -0700
committerAleksandr Nogikh <wp32pw@gmail.com>2022-04-22 15:53:27 +0200
commit131df97d431404458e805009bda794abfb00f45f (patch)
tree85c5f6a25e3b6c4ef95105a63fbe508dcef01f16 /pkg/vcs/git.go
parentf2c0ef2745dd142be4e07db94293b9b049c9ccfc (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.
Diffstat (limited to 'pkg/vcs/git.go')
-rw-r--r--pkg/vcs/git.go9
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()
}