DodoApp: clone with submodules
Change-Id: I82d53cb91e9629cc7735f92608d9b0ddaef9b913
diff --git a/apps/app-runner/main.go b/apps/app-runner/main.go
index ee2476a..ca99831 100644
--- a/apps/app-runner/main.go
+++ b/apps/app-runner/main.go
@@ -28,7 +28,7 @@
}
func CloneRepository(addr string, signer ssh.Signer, path string) error {
- _, err := git.Clone(memory.NewStorage(), osfs.New(path, osfs.WithBoundOS()), &git.CloneOptions{
+ c, err := git.Clone(memory.NewStorage(), osfs.New(path, osfs.WithBoundOS()), &git.CloneOptions{
URL: addr,
Auth: &gitssh.PublicKeys{
User: "git",
@@ -41,13 +41,32 @@
},
},
},
- RemoteName: "origin",
- ReferenceName: "refs/heads/master",
- Depth: 1,
- RecurseSubmodules: git.DefaultSubmoduleRecursionDepth,
- ShallowSubmodules: true,
- InsecureSkipTLS: true,
+ RemoteName: "origin",
+ ReferenceName: "refs/heads/master",
+ SingleBranch: true,
+ Depth: 1,
+ InsecureSkipTLS: true,
+ Progress: os.Stdout,
})
+ if err != nil {
+ return err
+ }
+ wt, err := c.Worktree()
+ if err != nil {
+ return err
+ }
+ sb, err := wt.Submodules()
+ if err != nil {
+ return err
+ }
+ if err := sb.Init(); err != nil {
+ return err
+ }
+ if err := sb.Update(&git.SubmoduleUpdateOptions{
+ Depth: 1,
+ }); err != nil {
+ return err
+ }
return err
}
diff --git a/core/installer/soft/client.go b/core/installer/soft/client.go
index 08103be..1c93666 100644
--- a/core/installer/soft/client.go
+++ b/core/installer/soft/client.go
@@ -205,6 +205,7 @@
},
RemoteName: "origin",
ReferenceName: "refs/heads/master",
+ SingleBranch: true,
Depth: 1,
InsecureSkipTLS: true,
Progress: os.Stdout,
@@ -212,6 +213,22 @@
if err != nil && !errors.Is(err, transport.ErrEmptyRemoteRepository) {
return nil, err
}
+ wt, err := c.Worktree()
+ if err != nil {
+ return nil, err
+ }
+ sb, err := wt.Submodules()
+ if err != nil {
+ return nil, err
+ }
+ if err := sb.Init(); err != nil {
+ return nil, err
+ }
+ if err := sb.Update(&git.SubmoduleUpdateOptions{
+ Depth: 1,
+ }); err != nil {
+ return nil, err
+ }
return &Repository{
Repository: c,
Addr: addr,
diff --git a/core/installer/soft/repoio.go b/core/installer/soft/repoio.go
index 6df9dcd..7df75dc 100644
--- a/core/installer/soft/repoio.go
+++ b/core/installer/soft/repoio.go
@@ -172,7 +172,7 @@
return nil
}
// TODO(gio): check `remote repository is empty`
- fmt.Println(err)
+ fmt.Printf("-- GIT PULL: %s\n", err.Error())
return nil
}