Golang使用go-git包时如何在Init函数中传入worktree并解决相关报错
问题根因
报错是go-billy依赖包的版本不匹配导致的:
你当前导入的memfs属于github.com/go-git/go-billy/v5新版,提供的Chroot方法返回v5版本的Filesystem接口;但你使用的go-git是旧版本,依赖gopkg.in/src-d/go-billy.v4,要求Chroot方法返回v4版本的Filesystem接口,二者类型不兼容无法正常传参。
另外你初始化时搭配内存存储+内存文件系统的逻辑是正确的,版本对齐后不会再出现最开始的worktree not available in a bare repository报错。
解决方案
二选一执行即可:
方案1:统一使用v4版本依赖
首先执行命令拉取对应版本的依赖包:go get gopkg.in/src-d/go-billy.v4/memfs go get gopkg.in/src-d/go-git.v4再修改代码的导入路径为v4版本:
import ( "gopkg.in/src-d/go-billy.v4/memfs" "gopkg.in/src-d/go-git.v4" "gopkg.in/src-d/go-git.v4/storage/memory" )原有git初始化逻辑无需改动,直接运行即可。
方案2:统一升级到v5版本依赖
执行命令拉取新版依赖包:go get github.com/go-git/go-billy/v5/memfs go get github.com/go-git/go-git/v5修改代码的导入路径为v5版本:
import ( "github.com/go-git/go-billy/v5/memfs" "github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5/storage/memory" )原有git初始化逻辑无需改动,直接运行即可。
内容的提问来源于stack exchange,提问作者Haimantika Mitra
相关产品推荐
相关产品推荐

