go modulesでgit forkとcloneしたライブラリの利用
github上にあるライブラリにバグがあったので、fork ⇛ clone後に修正して、自作パッケージからimportしようとした。すると、インポートエラーが発生して少しはまったので、備忘録とする。
取り扱うもの
go modules
git、github
どんなエラーか?
go.modで宣言しているパスと呼ばれてるパスが違うよと・・・
go: github.com/goroumaru/gocryptotrader@v0.0.0-20200731043922-68f65f5fa47e: parsing go.mod: module declares its path as: github.com/thrasher-corp/gocryptotrader but was required as: github.com/goroumaru/gocryptotrader
試したリポジトリ
今回はこれ。
fork元リポジトリ
github.com/thrasher-corp/gocryptotrader
forkしてローカルへcloneしたリポジトリ(つまり、これから修正する対象)
github.com/goroumaru/gocryptotrader
cloneしたリポジトリをインポートする自作レポジトリ
github.com/goroumaru/testRepository
ローカルファイル構成
- github.com - goroumaru - gocryptotrader (cloneしたリポジトリ) - testRepository (cloneリポジトリをインポートしたいリポジトリ)
対策
go.modへreplace文を追記すると、パスを読み替えてくれる。 勝手に読み替えてくれるので、import先ファイルで名称を手作業で変えてしまうと、またエラーとなるのでやらないこと。
cloneしたライブラリにある
go.mod
のmodule名称を変える[was]
module github.com/thrasher-corp/gocryptotrader
[is]
module github.com/goroumaru/gocryptotrader
自作レポジトリにある
go.mod
へ追加する[add]
github.com/thrasher-corp/gocryptotrader => ../gocryptotrader
参考
go.mod で利用している外部ライブラリをforkして修正したのを使う Go Modules でインターネット上のレポジトリにはないローカルパッケージを import する方法 ForkしてからPull Requestをするまでの流れ