AppRunner: Create .git directory when cloning repository
Change-Id: I733fd2aad5d7ec67c38cb773097b12b86ed69755
diff --git a/apps/app-runner/main.go b/apps/app-runner/main.go
index ebd0ef8..0449ca5 100644
--- a/apps/app-runner/main.go
+++ b/apps/app-runner/main.go
@@ -7,6 +7,7 @@
"log"
"net"
"os"
+ "path/filepath"
"strings"
"golang.org/x/crypto/ssh"
@@ -14,8 +15,9 @@
"github.com/go-git/go-billy/v5/osfs"
"github.com/go-git/go-git/v5"
"github.com/go-git/go-git/v5/plumbing"
+ "github.com/go-git/go-git/v5/plumbing/cache"
gitssh "github.com/go-git/go-git/v5/plumbing/transport/ssh"
- "github.com/go-git/go-git/v5/storage/memory"
+ "github.com/go-git/go-git/v5/storage/filesystem"
)
var port = flag.Int("port", 3000, "Port to listen on")
@@ -65,7 +67,14 @@
},
}
}
- repo, err := git.Clone(memory.NewStorage(), osfs.New(path, osfs.WithBoundOS()), opts)
+ repo, err := git.Clone(
+ filesystem.NewStorage(
+ osfs.New(filepath.Join(path, ".git"), osfs.WithBoundOS()),
+ cache.NewObjectLRUDefault(),
+ ),
+ osfs.New(path, osfs.WithBoundOS()),
+ opts,
+ )
if err != nil {
return nil, err
}
diff --git a/apps/app-runner/server.go b/apps/app-runner/server.go
index 89f621a..e917754 100644
--- a/apps/app-runner/server.go
+++ b/apps/app-runner/server.go
@@ -151,7 +151,7 @@
Commands: []CommandStatus{},
}
}
- if s.agentMode {
+ if s.agentMode && s.repoAddr == "" {
if _, err := os.Stat(filepath.Join(newDir, ".git")); err != nil && os.IsNotExist(err) {
commands = append(commands, command{cmd: "git config --global user.name dodo"})
s.status.Commands = append(s.status.Commands, CommandStatus{