8
ss "golang.org/x/crypto/ssh"
10
"github.com/go-git/go-git/v5"
11
"github.com/go-git/go-git/v5/config"
12
"github.com/go-git/go-git/v5/plumbing/transport/ssh"
13
"github.com/go-git/go-git/v5/storage/memory"
22
func New(from, to, key string) *Syncer {
30
func (s *Syncer) Sync() error {
31
keys, err := ssh.NewPublicKeys("git", []byte(s.key), "")
33
return fmt.Errorf("error on create key: %w", err)
37
keys.HostKeyCallbackHelper = ssh.HostKeyCallbackHelper{
38
HostKeyCallback: ss.InsecureIgnoreHostKey(),
41
r, err := git.Clone(memory.NewStorage(), nil, &git.CloneOptions{
50
return fmt.Errorf("error on clone: %w", err)
53
remote, err := r.CreateRemote(&config.RemoteConfig{
59
return fmt.Errorf("error on create remote: %w", err)
62
if err := remote.Push(&git.PushOptions{
68
}); err != nil && !errors.Is(err, git.NoErrAlreadyUpToDate) {
69
return fmt.Errorf("error on push: %w", err)