github.com/vchain-us/vcn@v0.9.11-0.20210921212052-a2484d23c0b3/pkg/extractor/git/commit.go (about) 1 /* 2 * Copyright (c) 2018-2020 vChain, Inc. All Rights Reserved. 3 * This software is released under GPL3. 4 * The full license information can be found under: 5 * https://www.gnu.org/licenses/gpl-3.0.en.html 6 * 7 */ 8 9 package git 10 11 import ( 12 "crypto/sha256" 13 "encoding/hex" 14 "io" 15 16 git "gopkg.in/src-d/go-git.v4" 17 "gopkg.in/src-d/go-git.v4/plumbing" 18 "gopkg.in/src-d/go-git.v4/plumbing/object" 19 ) 20 21 func lastCommit(repo *git.Repository) (*object.Commit, error) { 22 ref, err := repo.Head() 23 if err != nil { 24 return nil, err 25 } 26 27 return repo.CommitObject(ref.Hash()) 28 } 29 30 func digestCommit(c object.Commit) (hash string, size uint64, err error) { 31 o := &plumbing.MemoryObject{} 32 c.Encode(o) 33 34 reader, err := o.Reader() 35 if err != nil { 36 return 37 } 38 defer reader.Close() 39 40 h := sha256.New() 41 n, err := io.Copy(h, reader) 42 if err != nil { 43 return 44 } 45 return hex.EncodeToString(h.Sum(nil)), uint64(n), nil 46 }