fork of go-git with some jj specific features
at main 560 B view raw
1package main 2 3import ( 4 "os" 5 6 "github.com/go-git/go-git/v5" 7 . "github.com/go-git/go-git/v5/_examples" 8) 9 10func main() { 11 CheckArgs("<url>", "<sparse_path>", "<directory>") 12 url := os.Args[1] 13 path := os.Args[2] 14 directory := os.Args[3] 15 16 Info("git clone %s %s", url, directory) 17 18 r, err := git.PlainClone(directory, false, &git.CloneOptions{ 19 URL: url, 20 NoCheckout: true, 21 }) 22 CheckIfError(err) 23 24 w, err := r.Worktree() 25 CheckIfError(err) 26 27 err = w.Checkout(&git.CheckoutOptions{ 28 SparseCheckoutDirectories: []string{path}, 29 }) 30 CheckIfError(err) 31}