Я пробовал ваш код несколько раз с минимальными изменениями, как показано ниже, и он отлично работает в случае, когда репо также клонировано и git инициировано, сообщение фиксации для утверждения: https://github.com/peakle/iptables-http-services/commit/56eba2fcc4fac790ad573942ab1b926ddadf0875
Я не могу воспроизвести вашу проблему, но, возможно, это может помочь вам с ошибкой git, которая произошла в вашем случае: https://help.github.com/en/github/creating-cloning-and-archiving-repositories/error-repository-not-found, я думаю, у вас есть опечатка в имени репо или что-то похожее на случаи, описанные в ссылке выше.
и дополнительно для будущих улучшений вашей кодовой базы, у меня проблемы в случае, когда git еще не инициализирован, я добавляю код и блок TODO с рекомендациями, возможно, это поможет вам в будущем :)
package main
import (
"fmt"
_ "io/ioutil"
"os"
_ "path/filepath"
"time"
"github.com/apex/log"
"github.com/go-git/go-git/v5"
"github.com/go-git/go-git/v5/config"
"github.com/go-git/go-git/v5/plumbing/object"
"github.com/go-git/go-git/v5/plumbing/transport/http"
)
const gitDataDirectory = "/Users/peakle/projects/tests/iptables-http-services"
const defaultRemoteName = "origin"
func main() {
filename := "kek.txt"
file, _ := os.Create(fmt.Sprintf("%s/%s", gitDataDirectory, filename))
_, _ = file.Write([]byte("test string2"))
Commit(filename)
}
// Commit creates a commit in the current repository
func Commit(filename string) {
var isNewInit bool
repo, err := git.PlainOpen(gitDataDirectory)
if err != nil {
// Repository does not exist yet, create it
log.Info("The Git repository does not exist yet and will be created.")
repo, err = git.PlainInit(gitDataDirectory, false)
isNewInit = true
}
if err != nil {
log.Warn("The data folder could not be converted into a Git repository. Therefore, the versioning does not work as expected.")
return
}
w, _ := repo.Worktree()
log.Info("Committing new changes...")
if isNewInit {
err = w.AddGlob("*")
if err != nil {
fmt.Println(err)
}
//TODO if its new git init, need to add `git pull` command with remote branch
} else {
_, _ = w.Add(filename)
}
_, _ = w.Commit("test", &git.CommitOptions{
Author: &object.Signature{
Name: "peakle",
Email: "test@mail.com",
When: time.Now(),
},
})
_, err = repo.Remote(defaultRemoteName)
if err != nil {
log.Info("Creating new Git remote named " + defaultRemoteName)
_, err = repo.CreateRemote(&config.RemoteConfig{
Name: defaultRemoteName,
URLs: []string{"https://github.com/Peakle/iptables-http-services.git"},
})
if err != nil {
log.WithError(err).Warn("Error creating remote")
}
}
auth := &http.BasicAuth{
Username: "peakle",
Password: "authtoken",
}
log.Info("Pushing changes to remote")
err = repo.Push(&git.PushOptions{
RemoteName: defaultRemoteName,
Auth: auth,
})
if err != nil {
log.WithError(err).Warn("Error during push")
}
}