1package main
2
3import (
4 "fmt"
5 "os"
6
7 git "github.com/go-git/go-git/v5"
8 . "github.com/go-git/go-git/v5/_examples"
9 "github.com/go-git/go-git/v5/plumbing/transport/ssh"
10)
11
12func main() {
13 CheckArgs("<url>", "<directory>")
14 url, directory := os.Args[1], os.Args[2]
15
16 authMethod, err := ssh.NewSSHAgentAuth("git")
17 CheckIfError(err)
18
19 // Clone the given repository to the given directory
20 Info("git clone %s ", url)
21
22 r, err := git.PlainClone(directory, false, &git.CloneOptions{
23 Auth: authMethod,
24 URL: url,
25 Progress: os.Stdout,
26 })
27 CheckIfError(err)
28
29 // ... retrieving the branch being pointed by HEAD
30 ref, err := r.Head()
31 CheckIfError(err)
32 // ... retrieving the commit object
33 commit, err := r.CommitObject(ref.Hash())
34 CheckIfError(err)
35
36 fmt.Println(commit)
37}