我试图配置rb-gateway(用 Go 编写的简单代理,它支持 ReviewBoard 的自定义存储库)。git2go 是从下一个分支与libgit2一起构建的。从差异生成补丁期间出现问题。下面的代码总是只返回第一个文件更改。
package main
import (
"github.com/libgit2/git2go"
"log"
)
func main() {
gitRepo, err := git.OpenRepository("repo_path")
if err != nil {
log.Fatal(err)
}
commitOid, err := git.NewOid("commit_id_sha1")
if err != nil {
log.Fatal(err)
}
commit, err := gitRepo.LookupCommit(commitOid)
if err != nil {
log.Fatal(err)
}
commitTree, err := commit.Tree()
if err != nil {
log.Fatal(err)
}
options, err := git.DefaultDiffOptions()
if err != nil {
log.Fatal(err)
}
// Specifying full patch indices.
options.IdAbbrev = 40
var parentTree *git.Tree
if commit.ParentCount() > 0 {
parentTree, err = commit.Parent(0).Tree()
if err != nil {
log.Fatal(err)
}
}
gitDiff, err := gitRepo.DiffTreeToTree(parentTree, commitTree, &options)
if err != nil {
log.Fatal(err)
}
patch, err := gitDiff.Patch(0)
if err != nil {
log.Fatal(err)
}
patchString, err := patch.String()
if err != nil {
log.Fatal(err)
}
log.Printf("%s", patchString)
patch.Free()
}
环境: go version go1.4.2 linux/amd64 git version 1.8.3.1 libgit2 and git2go latest Linux 3.10.0-327.4.5.el7.x86_64 (CentOS)
富国沪深
相关分类