go-git


package main

import(
    "fmt"
    "github.com/go-git/go-git/v5"
    "github.com/go-git/go-git/v5/plumbing/object"
)
 

func gitWork() {
 r, err := git.PlainOpen("../wubei/wubei")
 if err != nil {
  fmt.Println(err)
  return
 }

 fmt.Println("r", r)

 // ... retrieves the branch pointed by HEAD
 ref, err := r.Head()
 if err != nil {
  fmt.Println(err)
  return
 }

 fmt.Println("ref", ref)

 // ... retrieves the commit history
 cIter, err := r.Log(&git.LogOptions{From: ref.Hash()})
 if err != nil {
  fmt.Println(err)
  return
 }

 var cCount int
 err = cIter.ForEach(func(c *object.Commit) error {
  cCount++
  fmt.Println("Author", c.Author)
  fmt.Println("Message", c.Message)
  return nil
 })
 if err != nil {
  fmt.Println(err)
  return
 }

 fmt.Println("cCount", cCount)
}