Skip to content

Instantly share code, notes, and snippets.

@takumin
Created November 22, 2019 02:23
Show Gist options
  • Save takumin/358681b37dfb9214894c8f8dbd26f092 to your computer and use it in GitHub Desktop.
Save takumin/358681b37dfb9214894c8f8dbd26f092 to your computer and use it in GitHub Desktop.
package main
import (
"log"
"os"
"gopkg.in/src-d/go-billy.v4/memfs"
"gopkg.in/src-d/go-git.v4"
"gopkg.in/src-d/go-git.v4/config"
"gopkg.in/src-d/go-git.v4/plumbing/transport/http"
"gopkg.in/src-d/go-git.v4/storage/memory"
)
func main() {
repo, err := git.Clone(memory.NewStorage(), memfs.New(), &git.CloneOptions{
URL: os.Getenv("GIT_ORIGIN"),
Progress: os.Stdout,
})
if err != nil {
log.Fatal(err)
}
_, err = repo.CreateRemote(&config.RemoteConfig{
Name: "mirror",
URLs: []string{os.Getenv("GIT_MIRROR")},
Fetch: []config.RefSpec{"+refs/heads/*:refs/remotes/mirror/*"},
})
if err != nil {
log.Fatal(err)
}
err = repo.Push(&git.PushOptions{
RemoteName: "mirror",
Auth: &http.BasicAuth{
Username: os.Getenv("GIT_USERNAME"),
Password: os.Getenv("GIT_PASSWORD"),
},
Progress: os.Stdout,
})
if err == git.NoErrAlreadyUpToDate {
log.Println("Success!")
} else {
log.Fatal(err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment