goroumaru41gou

遊んでいる中でインプットした内容をアウトプットする場

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先ファイルで名称を手作業で変えてしまうと、またエラーとなるのでやらないこと。

  1. cloneしたライブラリにあるgo.modのmodule名称を変える

    [was] module github.com/thrasher-corp/gocryptotrader

    [is] module github.com/goroumaru/gocryptotrader

  2. 自作レポジトリにあるgo.modへ追加する

    [add] github.com/thrasher-corp/gocryptotrader => ../gocryptotrader

参考

go.mod で利用している外部ライブラリをforkして修正したのを使う Go Modules でインターネット上のレポジトリにはないローカルパッケージを import する方法 ForkしてからPull Requestをするまでの流れ